Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在返回的mongo集合中循环无法向JSON添加新值_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 在返回的mongo集合中循环无法向JSON添加新值

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) {

我正在用我的节点应用程序返回一个Mongo集合(使用Mongoose),并试图在其返回时通过它进行循环,以增加每个集合项的新值

我使用的是下划线,但由于某些原因,它没有将我要添加的内容附加到列表中。我做错了什么

我的代码:

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节点中不可能使用,因为每个节点都是异步的。我不确定下划线是否是这种情况,但是如果下划线中的
每个
都是异步的,那么在使用新数据之前,您需要等待所有调用完成。哦,奇怪。是的,这将工作得很好,因为我正在将它传递回我的控制器,以发送到我的视图。谢谢你的解释,希拉鲁丁。工作完美。