Javascript 在返回的mongo集合中循环无法向JSON添加新值
我正在用我的节点应用程序返回一个Mongo集合(使用Mongoose),并试图在其返回时通过它进行循环,以增加每个集合项的新值 我使用的是下划线,但由于某些原因,它没有将我要添加的内容附加到列表中。我做错了什么 我的代码:Javascript 在返回的mongo集合中循环无法向JSON添加新值,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在用我的节点应用程序返回一个Mongo集合(使用Mongoose),并试图在其返回时通过它进行循环,以增加每个集合项的新值 我使用的是下划线,但由于某些原因,它没有将我要添加的内容附加到列表中。我做错了什么 我的代码: Submission.find({}).sort('date', -1).execFind(function (err, submissions) { _.each(submissions, function (submission, key) {
Submission.find({}).sort('date', -1).execFind(function (err, submissions) {
_.each(submissions, function (submission, key) {
submissions[key]['newValue'] = 'test';
});
});
但它并没有增加新的价值:“测试”
当我输入console.log时,我得到以下信息:
[{
user_id: 1234,
title: 'testing tyhe slug generation',
description: '',
topic: 'movies',
source: 'http://www.apple.com',
ip: '127.0.0.1',
approved: false,
slug: 'testing-tyhe slug generation',
_id: 5133a60e16661e41db000001,
created: Sun Mar 03 2013 11:35:42 GMT-0800 (PST),
thumbnail: '9146edb190a960c1cc3b0eda7d9f719d'
}, {
user_id: 1234,
title: 'New submission test slug',
description: '',
topic: 'food-drink',
source: 'http://www.apple.com',
ip: '127.0.0.1',
approved: false,
slug: 'new-submission-test-slug',
_id: 5133a6c8adcde860db000001,
created: Sun Mar 03 2013 11:38:48 GMT-0800 (PST),
thumbnail: 'd80003cf9c81a4982fbb81c99abb52dc'
}]
这是一个异步问题吗?@bob_cobb,Mongoose将结果作为“文档”集合返回。我指的是javascript对象数组,而不是JSON。因此,在这些文档中执行的任何粗心操作都会影响数据库内容 根据我的理解,这里需要在文档中添加动态或添加属性。我们也要这样做:
Submission.find({}).sort('date', -1).execFind(function (err, submissions) {
_.each(submissions, function (submission, key) {
//Here you are converting javascript object into JSON.
//That is remove all the functions associated with "submission" object.
submissions[key] = submissions[key].toJSON();
submissions[key]['newValue'] = 'test';
//Note: Here submission.save() won't work.
});
});
在添加一些值之前,您必须将其添加到模式中或将其转换为对象,这样您就不能只向mongoose模型添加值。。我没有使用最新版本,但我认为在v3.xIn节点中不可能使用,因为每个节点都是异步的。我不确定下划线是否是这种情况,但是如果下划线中的
每个都是异步的,那么在使用新数据之前,您需要等待所有调用完成。哦,奇怪。是的,这将工作得很好,因为我正在将它传递回我的控制器,以发送到我的视图。谢谢你的解释,希拉鲁丁。工作完美。