Mahdi
8 ماه پیش توسط Mahdi مطرح شد
1 پاسخ

موجودیت داکیومنت در mongodb

سلام دوستان من میخواستم که اگه یک داکیومنتی داخل کالکشن 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');

ثبت پرسش جدید
Mahdi
تخصص : :) عاشق js و php (:
@mahdisamadiyan82 8 ماه پیش مطرح شد
0

سلام کد زیر داکیومنت رو از بین تمامی کالکشن ها جست و جو نمیکرد بلکه ولیدیت میکرد و این موضوع حل شد :

var mongoose = require('mongoose');
mongoose.Types.ObjectId.isValid('your id here');

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام