MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Luwak:CastError:Cast ke ObjectId gagal untuk nilai [objek Obyek] di jalur _id

Jawaban singkat:gunakan luwak.Types.ObjectId .

Luwak (tetapi bukan luwak) dapat menerima ID objek sebagai string dan "melemparkannya" dengan benar untuk Anda, jadi gunakan saja:

MyClass.findById(req.params.id)

Namun, peringatannya adalah jika req.params.id bukan format yang valid untuk string ID mongo, yang akan memunculkan pengecualian yang harus Anda tangkap.

Jadi hal utama yang membingungkan untuk dipahami adalah mongoose.SchemaTypes memiliki hal-hal yang hanya Anda gunakan saat mendefinisikan skema luwak, dan mongoose.Types memiliki hal-hal yang Anda gunakan saat membuat objek data yang ingin Anda simpan di database atau objek kueri. Jadi mongoose.Types.ObjectId("51bb793aca2ab77a3200000d") berfungsi, akan memberi Anda objek yang dapat Anda simpan di database atau digunakan dalam kueri, dan akan memberikan pengecualian jika diberikan string ID yang tidak valid.

findOne mengambil objek kueri dan meneruskan contoh model tunggal ke panggilan balik. Dan findById secara harfiah adalah pembungkus findOne({_id: id}) (lihat kode sumber di sini). Cukup find mengambil objek kueri dan meneruskan larik instance model yang cocok ke callback.

Pelan-pelan saja. Ini membingungkan tetapi saya dapat menjamin Anda bahwa Anda semakin bingung dan tidak mengenai bug di luwak pada saat ini. Ini adalah perpustakaan yang cukup matang, tetapi perlu waktu untuk menguasainya.

Hal lain yang mencurigakan yang saya lihat di cuplikan Anda tidak menggunakan new saat membuat instance ChildClass . Selain itu, Anda harus memposting kode skema agar kami dapat membantu Anda melacak CastError yang tersisa.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menggunakan Peta/Pengurangan di MongoDB?

  2. Kiat untuk Mengelola MongoDB dari Jarak Jauh

  3. Menggunakan MongoDB $pull untuk menghapus dokumen dalam Array

  4. Cara deserialize objek BsonDocument kembali ke kelas

  5. Panjang nilai bidang string di mongoDB