Saya menggunakan NodeJS untuk memasukkan dokumen di MongoDB. Menggunakan collection.insert
I dapat memasukkan dokumen ke dalam database seperti dalam kode ini:
// ...
collection.insert(objectToInsert, function(err){
if (err) return;
// Object inserted successfully.
var objectId; // = ???
});
// ...
Bagaimana saya bisa mendapatkan _id
objek yang disisipkan?
Apakah ada cara untuk mendapatkan _id
tanpa memasukkan objek terbaru _id
?
Misalkan dalam waktu yang sama banyak orang yang mengakses database, saya tidak bisa memastikan apakah id terbaru adalah id dari objek yang disisipkan.
javascript
node.js
mongodb
Ionică Bizău
sumber
sumber
Cara yang lebih pendek daripada menggunakan parameter kedua untuk callback
collection.insert
akan menggunakanobjectToInsert._id
yang mengembalikan_id
(di dalam fungsi callback, anggap itu adalah operasi yang berhasil).Driver Mongo untuk NodeJS menambahkan
_id
bidang ke referensi objek asli, sehingga mudah untuk mendapatkan id yang disisipkan menggunakan objek asli:sumber
objectInserted
? Saya kira Anda kehilangan inti dari jawaban ini: pengemudi Mongo menambahkan_id
bidang ke objek aslinya. Saya mengedit jawaban untuk digunakan diobjectToInsert
mana-mana. Semoga semuanya lebih jelas sekarang. :)insert()
tidak digunakan lagi. GunakaninsertOne()
sebagai gantinyaSeperti yang dikatakan ktretyak, untuk memasukkan ID dokumen yang disisipkan cara terbaik adalah dengan menggunakan properti insertId pada objek hasil. Dalam kasus saya result._id tidak berfungsi jadi saya harus menggunakan yang berikut:
Itu sama saja jika Anda menggunakan callback.
sumber
Saya benar-benar melakukan console.log () untuk parameter kedua dalam fungsi callback untuk insert. Sebenarnya ada banyak informasi yang dikembalikan selain dari objek yang disisipkan itu sendiri. Jadi kode di bawah ini menjelaskan bagaimana Anda dapat mengakses id itu.
sumber
ObjectID {_bsontype: "ObjectID", id: Buffer(12)}
. Bagaimana saya bisa menggunakannya untuk mendapatkan id sebenarnya yang ada di database? ... Temukan jawabannya di komentar lain: Gunakanresult.insertedId.toString()
Mongo mengirimkan dokumen lengkap sebagai objek panggilan balik sehingga Anda bisa mendapatkannya hanya dari sana.
sebagai contoh
sumber
Sekarang Anda bisa menggunakan metode insertOne dan result.insertedId di promise
sumber
(doc, options, callback)
. Parameter ketiga - panggilan balik, yang mengambil dua parameter(error, result)
. Danresult
- inilah yang Anda cari.@JSideris, contoh kode untuk mendapatkan insertId.
sumber
jika Anda ingin mengambil "_id" gunakan simpley
// toString akan mengkonversi dari hex
sumber
result.insertedId
adalahObjectID
objek tipe..toString()
akan mengubah objek ini menjadi UUID yang sebenarnya.Anda bisa menggunakan fungsi async untuk mendapatkan kolom _id secara otomatis tanpa memanipulasi objek data:
Mengembalikan data:
sumber
Cara lain untuk melakukannya dalam fungsi async:
sumber