سلام دوستان من میخواستم که اگه یک داکیومنتی داخل کالکشن user هام با آبجکت آیدی مد نظر نبود برام null برگردونه و کلا برام چیزی برگردونه که بتونم استفاده کنم ازش ولی بجاش بهم ارور میده وقتی یک کاربری موجود نبود!!!
کد من :
let userf = await user.findOne({ _id: req.query.id})
اروری که میگیرم :
CastError: Cast to ObjectId failed for value "hjklllllllllllll" (type string) at path "_id" for model "User" at ObjectId.cast (C:\Users\Administrator\Desktop\node\node_modules\mongoose\lib\schema\objectid.js:250:11) at SchemaType.applySetters (C:\Users\Administrator\Desktop\node\node_modules\mongoose\lib\schematype.js:1220:12) at SchemaType.castForQuery (C:\Users\Administrator\Desktop\node\node_modules\mongoose\lib\schematype.js:1632:15) at cast (C:\Users\Administrator\Desktop\node\node_modules\mongoose\lib\cast.js:356:32) at Query.cast (C:\Users\Administrator\Desktop\node\node_modules\mongoose\lib\query.js:4910:12) at Query._castConditions (C:\Users\Administrator\Desktop\node\node_modules\mongoose\lib\query.js:2232:10) at model.Query._findOne (C:\Users\Administrator\Desktop\node\node_modules\mongoose\lib\query.js:2519:8) at model.Query.exec (C:\Users\Administrator\Desktop\node\node_modules\mongoose\lib\query.js:4429:28) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async UserController.showOneUser (C:\Users\Administrator\Desktop\node\controllers\userController.js:18:25)
ارور به لاین 18 میگیره و من کد لاین 18 رو براتون بالا نوشتم!
یعنی کلا به خود findOne در صورت نبود داکیومنت با اون آبجکت آیدی بهم ارور میده!
من یه تیکه کد برای بررسی موجودیت داکیومنت پیدا کردم ولی این کد اصلا اصولی نیست و بجای اینکه توی کالکشن user بگرده تو کل کالکشن ها بررسی میکنه ببینه که اون داکیومنت هست یا نه !!
جایگزینی برای کد زیر هست که فقط داخل یک کالکشن موجودیت داکیومنت من رو بررسی کنه؟ :
var mongoose = require('mongoose');
mongoose.Types.ObjectId.isValid('your id here');
سلام کد زیر داکیومنت رو از بین تمامی کالکشن ها جست و جو نمیکرد بلکه ولیدیت میکرد و این موضوع حل شد :
var mongoose = require('mongoose');
mongoose.Types.ObjectId.isValid('your id here');
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟