MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose:CastError:Прехвърлянето към ObjectId не бе успешно за стойност [object Object] на път _id

Кратък отговор:използвайте mongoose.Types.ObjectId .

Mongoose (но не и mongo) може да приема идентификатори на обекти като низове и да ги „прехвърля“ правилно вместо вас, така че просто използвайте:

MyClass.findById(req.params.id)

Въпреки това, предупреждението е ако req.params.id не е валиден формат за mongo ID низ, който ще изведе изключение, което трябва да хванете.

Така че основното объркващо нещо, което трябва да разберете, е, че mongoose.SchemaTypes има неща, които използвате само при дефиниране на схеми на mongoose и mongoose.Types има нещата, които използвате, когато създавате обекти с данни, които искате да съхраните в базата данни или обекти за заявка. Така че mongoose.Types.ObjectId("51bb793aca2ab77a3200000d") работи, ще ви даде обект, който можете да съхранявате в базата данни или да използвате в заявки, и ще изведе изключение, ако е даден невалиден низ за идентификатор.

findOne взема обект на заявка и предава един модел на екземпляра на обратното извикване. И findById е буквално обвивка на findOne({_id: id}) (вижте изходния код тук). Просто find приема обект на заявка и предава масив от съвпадащи екземпляри на модел към обратното извикване.

Просто върви бавно. Това е объркващо, но мога да ви гарантирам, че се обърквате и не удряте грешки в mongoose в този момент. Това е доста зряла библиотека, но отнема известно време, за да се овладеете.

Другото подозрително нещо, което виждам във вашия фрагмент, не е използването на new при инстанциране на ChildClass . Освен това ще трябва да публикувате кода на вашата схема, за да ви помогнем да отстраните всички останали CastErrors.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB заявки с нулева стойност

  2. Най-добри практики за .NET за MongoDB връзки?

  3. Mongo групово намиране и актуализиране на полето за съответстващи документи в една заявка?

  4. MongoDB Analytics Series:SlamData – Изпълнявайте SQL и изграждайте отчети директно в MongoDB

  5. MongoDB - различен със заявка не използва индекси