Sebelum luwak 4.x, di update(), Anda dapat memeriksa parameter ke-2 di callback untuk melihat apakah dokumen ditemukan. Pada contoh di bawah, Anda dapat menggunakan "rowAffected" untuk melihat apakah ada dokumen dengan nama pengguna john.
model.update({ username: "john" }, { ... }, function(err, rowAffected){
if (rowAffected) // document found
Tapi sekarang dari luwak 4.x, parameter ke-2 dalam panggilan balik menjadi keluaran mentah MongoDB dari operasi pembaruan. Jadi untuk mengetahui apakah dokumen ada, saya harus melakukan raw.n
model.update({ username: "john" }, { ... }, function(err, raw){
if (raw.n) // document found
Pertanyaan saya adalah apakah "rowAffected" dan "raw.n" adalah hal yang sama? Jika demikian, apakah aman untuk mengganti semua rowAffected oleh raw.n saat bermigrasi dari 3.x ke 4.x?
1 menjawab
Ya, mereka adalah hal yang sama. Menurut 4.0 catatan rilis:
#2552: Mengupgrade driver mongodb ke 2.0.x. Mongoose adalah lapisan pembungkus di atas driver node MongoDB. Driver mongodb baru-baru ini merilis versi 2.0, yang mencakup banyak kinerja dan peningkatan kegunaan. Pengemudi baru, bagaimanapun, memperkenalkan beberapa perubahan yang memengaruhi cara Anda menggunakan Mongoose:
- Jika Anda terhubung ke set replika, Anda harus menentukan opsi
replicaSet
di tali koneksi.update
mengembalikan objek hasil dari MongoDB server, bukan hanya nomor yang terpengaruh. Parameter kedua untuk panggilan balik sekarang akan terlihat seperti{ ok: 1, n: 3 }
bukan hanya jumlah yang terpengaruh.