Mongoose: Использование бережливого производства для экономии?

Созданный на 3 окт. 2013  ·  16Комментарии  ·  Источник: Automattic/mongoose

Я хотел бы использовать вариант бережливого производства для экономии.
Обратный вызов save также возвращает документ мангуста, а не объект JS, который я хочу изменить с помощью вызова, подобного Lean.

Использование Lean для запросов и toObject в функциях обратного вызова сохранений кажется мне путаницей.

Любые идеи?

Самый полезный комментарий

@imrefazekas , Save, Update, Create и Remove не являются «запросами», поэтому они не принимают директиву .lean() как есть.
Вы можете использовать метод .toObject() для возвращаемого объекта, чтобы получить его без схемы:

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);
});

Все 16 Комментарий

Если вы не хотите использовать бережливое производство, лучше всего сформировать новый объект из возвращенного объекта Mongoose.

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
    });
});

Может мой пост был непонятен, извините.
Я бы хотел использовать бережливое производство, но и на экономичных операциях.
Обратные вызовы функций сохранения, такие как «сохранить» или «обновить», возвращаются с объектом схемы, и я не могу использовать Lean для получения чистого объекта JS.
Это моя проблема. Я также хотел бы использовать Lean для сохранения и обновления.

@imrefazekas , Save, Update, Create и Remove не являются «запросами», поэтому они не принимают директиву .lean() как есть.
Вы можете использовать метод .toObject() для возвращаемого объекта, чтобы получить его без схемы:

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);
});

хмурое мычание ... У save() должен быть постный вариант?

Как вы представляете, как save () и бережливое производство работают вместе? AFAIK это не имеет смысла.

ммм, это было несколько дней, но сейчас это так

user.save(function(err,user){

      //user is full-fledged etc
});

с бережливым вариантом это было бы / могло быть

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

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

не так ли?

@ORESoftware нет, потому что второй параметр в

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

ну ладно понял :) моя плохая

для записи, решение, предоставленное выше @refack, по- прежнему работает как шарм в 2017 году

@peterpeterparker Я не согласен и думаю, что это все еще проблема для пользователей, которые хотят, чтобы данные возвращались из всех операций с базой данных вместо экземпляров Mongoose.

@ alex-dixon Я только что указывал, что решение @refack для save все еще действует и работает в 2017 году, ни больше, ни меньше;)

@peterpeterparker Вы правы. Извините. Не следовало направлять это на вас.

@ Alex-dixon не беспокойся

должны ли мы использовать lean() с Model.create() ?

Никогда, потому что вы не можете использовать lean() с Model.create() : p

понятно :)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги