Я хотел бы использовать вариант бережливого производства для экономии.
Обратный вызов save также возвращает документ мангуста, а не объект JS, который я хочу изменить с помощью вызова, подобного Lean.
Использование Lean для запросов и toObject в функциях обратного вызова сохранений кажется мне путаницей.
Любые идеи?
Если вы не хотите использовать бережливое производство, лучше всего сформировать новый объект из возвращенного объекта 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
понятно :)
Самый полезный комментарий
@imrefazekas , Save, Update, Create и Remove не являются «запросами», поэтому они не принимают директиву
.lean()
как есть.Вы можете использовать метод
.toObject()
для возвращаемого объекта, чтобы получить его без схемы: