Mongoose: Menggunakan lean untuk menghemat?

Dibuat pada 3 Okt 2013  ·  16Komentar  ·  Sumber: Automattic/mongoose

Saya ingin menggunakan opsi lean untuk save.
Callback save mengembalikan juga dokumen luwak dan bukan objek JS yang ingin saya ubah menggunakan panggilan seperti lean.

Menggunakan lean untuk kueri dan toObject dalam fungsi panggilan balik save sepertinya membingungkan bagi saya.

Ada ide?

Komentar yang paling membantu

@imrefazekas , Simpan, Perbarui, Buat, dan Hapus bukan "kueri", jadi mereka tidak menerima arahan .lean() apa adanya.
Anda dapat menggunakan metode .toObject() pada objek yang dikembalikan untuk mendapatkannya tanpa skema:

p.save(function (err, returned) {
  var leanObject = returned.toObject(); // has many options: http://mongoosejs.com/docs/api.html#document_Document-toObject
  assert.equal(leanObject.schema, null);
});

Semua 16 komentar

Jika Anda tidak ingin menggunakan lean, maka taruhan terbaik Anda adalah membentuk objek baru dari objek Mongoose yang dikembalikan

Person.findOne({
    _id: req.user.id
}, function(err, result) {
    if (err)
        return next(err);

    return (200, {
        id: result._id,
        spouse: result.spouse,
        children: result.children
    });
});

Mungkin postingan saya kurang jelas, maaf.
Saya ingin menggunakan lean tetapi juga pada operasi penghematan.
Panggilan balik dari fungsi simpan seperti "simpan" atau "perbarui" kembali dengan objek skema dan saya tidak dapat menggunakan lean untuk memiliki objek JS murni.
Ini masalahku. Saya ingin menggunakan lean untuk menyimpan dan memperbarui juga.

@imrefazekas , Simpan, Perbarui, Buat, dan Hapus bukan "kueri", jadi mereka tidak menerima arahan .lean() apa adanya.
Anda dapat menggunakan metode .toObject() pada objek yang dikembalikan untuk mendapatkannya tanpa skema:

p.save(function (err, returned) {
  var leanObject = returned.toObject(); // has many options: http://mongoosejs.com/docs/api.html#document_Document-toObject
  assert.equal(leanObject.schema, null);
});

hummity hums... save() harus memiliki opsi lean?

Bagaimana Anda membayangkan save() dan lean bekerja sama? AFAIK itu tidak masuk akal.

ummm, sudah beberapa hari tapi saat ini seperti begitu

user.save(function(err,user){

      //user is full-fledged etc
});

dengan opsi lean, itu akan/bisa jadi

user.save({
  lean:true
},function(err,user){

      //user is *not* full-fledged etc
});

bukan begitu?

@ORESoftware tidak, karena parameter ke-2 dalam panggilan balik untuk menyimpan adalah dokumen yang sama persis. Luwak tidak meminta database untuk dokumen yang baru diperbarui. Contohnya,

user.save(function(err, _user){
  user === _user; // true
});

oh ok mengerti :) saya buruk

sebagai catatan, solusi yang diberikan di atas oleh @refack masih berfungsi seperti pesona di 2017

@peterpeterparker Saya tidak setuju dan berpikir ini masih menjadi masalah bagi pengguna yang ingin data dikembalikan dari semua operasi basis data alih-alih instance Mongoose.

@alex-dixon Saya baru saja menunjukkan bahwa solusi @refack untuk operasi save masih valid dan berfungsi pada tahun 2017, tidak lebih, tidak kurang;)

@peterpeterparker Anda benar. Maaf. Seharusnya tidak mengarahkan itu ke arah Anda.

@alex-dixon jangan khawatir

haruskah kita menggunakan lean() dengan Model.create() ?

Tidak pernah karena Anda tidak dapat menggunakan lean() dengan Model.create() :p

mengerti :)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat