Saya punya dokumen dari luwak menemukan bahwa saya ingin memperluas sebelum JSON encoding dan mengirimkan sebagai tanggapan. Jika saya mencoba menambahkan properti ke dokumen itu diabaikan. Properti tidak muncul dalam Object.getOwnPropertyNames(doc)
membuat perluasan normal tidak mungkin. Yang aneh adalah itu JSON.parse(JSON.encode(doc))
berfungsi dan mengembalikan objek dengan semua properti yang benar. Apakah ada cara yang lebih baik untuk melakukan ini?
200
Model.find({})
docs return adalah array. Bisakah Anda mendokumentasikan?var docArray = modelArray.map(function(model) { return model.toObject(); });
Cara lain untuk melakukan ini adalah memberi tahu Mongoose bahwa yang Anda butuhkan hanyalah versi JavaScript polos dari dokumen yang dikembalikan dengan menggunakan
lean()
dalam rantai kueri. Dengan cara itu Mongoose melompati langkah membuat contoh model lengkap dan Anda langsung mendapatkandoc
Anda dapat memodifikasi:sumber
lean
umumnya lebih berkinerja karena Anda melewatkan overhead pertama membuat dokumen Mongoose penuh.lean()
pada kueri menetapkan opsi sebelum kueri benar-benar dieksekusi (olehexec
) sehingga hasilnya langsung dalam bentuk "lean" mereka. Lihat pertanyaan ini untuk sisi dampak panggilan kinerja yang positiflean
.cara cepat jika properti tidak ada dalam model:
document.set( key,value, { strict: false });
sumber
Cara yang lebih baik untuk mengatasi masalah seperti ini adalah menggunakan
doc.toObject()
seperti iniopsi lain termasuk:
getters:
terapkan semua getter (jalur dan getter virtual)virtuals:
terapkan getter virtual (dapat mengesampingkan opsi getter)minimize:
menghapus objek kosong (default ke true)transform:
fungsi transformasi untuk diterapkan ke dokumen yang dihasilkan sebelum kembalidepopulate:
turunkan populasi jalur apa pun yang diisi, ganti dengan referensi aslinya (default ke false)versionKey:
apakah akan memasukkan kunci versi (default ke true)jadi misalnya bisa dibilang
dan sekarang ini akan bekerja.
Untuk referensi, lihat: http://mongoosejs.com/docs/api.html#document_Document-toObject
sumber
Untuk mendapatkan objek biasa dari dokumen luwak, saya menggunakan
_doc
properti sebagai berikutSaya mencoba
toObject
tetapi memberi saya fungsi, argumen dan semua hal lain yang tidak saya butuhkan.sumber
_
pada awalnya bukanlah solusi yang ideal. Menggunakan lean dapat menyelesaikan kasus Anda._doc
properti berkali-kali tanpa menghadapi masalah apa pun. Dan menggunakanlean
metode memberi Anda objek polos di mana Anda tidak dapat melakukan operasi model luwak.Anda juga dapat merender objek dan kemudian mengurai untuk membuat objek normal. Misalnya seperti: -
sumber