TypeError:Object#<promise>没有方法'forEach'mongodb </promise>

时间:2014-07-10 18:19:09

标签: node.js mongodb foreach mongoose

我正在尝试使用Visual Studio中的MongoDB和nodejs将文档从一个集合复制到另一个集合。这就是我要做的事情:

var newcollection = db.get('mynewdata');
var oldcollection = db.get('myusercollection');
var userName = req.body.username;

oldcollection.find({ "username" : userName }).forEach(function (docs) {
     newcollection.insert(docs);
});

在Mongo网站上,它说collection.find()应该返回一个应该能够使用forEach()方法的游标。但是,它没有返回一个游标对象,并且forEach似乎没有为它返回的任何内容定义。

我从主题行中得到错误:TypeError: Object #<Promise> has no method 'forEach'

关于它为什么给我这个错误的任何想法?

2 个答案:

答案 0 :(得分:1)

试试这个:

oldcollection.find({ "username" : userName }).exec(function(err, results){
    if(err){
        throw err
    } else {
        results.forEach(function(docs){
            newcollection.insert(docs)
        })
    }
});

我认为你的问题是来自查询的响应是一个对象。这种方法对我有用。

答案 1 :(得分:0)

  

在Mongo网站上

核心mongo API可能就是这种情况,但Node.js模块却不是这样。

但是,请确保您使用的是正确版本的Node库(以及官方版本)。