我正在尝试使用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'
关于它为什么给我这个错误的任何想法?
答案 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库(以及官方版本)。