【发布时间】:2016-10-19 10:36:32
【问题描述】:
假设我有这个查询
var query1 = usersrec.find({username:target}, {});
query1.exec(function (err, docs){
if(err) throw ;
});
它给出了这个结果
{
"_id" : ObjectId("5806ba413202e30d68152aa4"),
"username" : "sammy",
"firstname" : "samuel",
"lastname" : "jackson",
"gender" : "male",
"phone" : "0123456789",
"image" : "sam.jpg"
}
我想在使用 socket.io 发出之前,将从另一个集合 {"Balance" : "1011"} 获得的值添加到这个结果文档中。
我已经尝试了很多事情并得到了错误,但这没有添加余额键/值:
docs[0].balance = '1011';
console.log(docs);
socket.emit('usernames', docs);
文档仍保留其初始值。我错过了什么?
【问题讨论】:
-
似乎您正在使用 Mongoose,如果是这样,那么您需要在查询
query1.lean().exec(...)上调用lean()方法。这将确保从启用了精简选项的查询返回的文档是纯 JavaScript 对象,您可以对其进行操作并添加其他 balance 属性。 -
@chridam 非常感谢!像魅力一样工作。有趣的是,您不知道的微小事物可以使代码完全不同。谢谢!
标签: mongodb mongoose socket.io