Javascript ';TypeError:meme.find(…).forEach不是函数';在mongoose节点js中?
我想在MongoDB中循环我的集合,所以我尝试了Javascript ';TypeError:meme.find(…).forEach不是函数';在mongoose节点js中?,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我想在MongoDB中循环我的集合,所以我尝试了.forEach来执行该操作,但看起来这不是正确的方法。每次我尝试运行它时,它都会给我错误:TypeError:meme.find(…).forEach不是一个函数 这是我的代码: var meme = require('../app/model/meme'); meme.find().forEach(function(meme){ meme.update({_id: meme._id}, {$set: { objectID: meme._
.forEach
来执行该操作,但看起来这不是正确的方法。每次我尝试运行它时,它都会给我错误:TypeError:meme.find(…).forEach不是一个函数
这是我的代码:
var meme = require('../app/model/meme');
meme.find().forEach(function(meme){
meme.update({_id: meme._id}, {$set: { objectID: meme._id.toString().slice(10).slice(0,24)}});
});
我正在使用mongoose和node.js来执行该操作
如果能帮我解决这个问题,我将不胜感激
谢谢
find
方法是异步函数,所以它不返回结果,而是需要传递回调
您有该方法的文档
所以你应该打个电话,例如:
meme.find().exec(function (err, docs) {
// something
});
试一试以上的一个,,
mongoose返回一个承诺,您必须首先执行结果,然后才能迭代该结果。函数()中有三个主要状态。如果在中找到数据,则需要更新数据,如果出现问题,则需要处理。。。并且需要处理最终的那个函数已经完成了它的工作,需要给
回拨
找不到数据
var meme = require('../app/model/meme');
meme.find(query).stream()
.on('data', function(meme){
meme.update({_id: meme._id}, {$set: { objectID: meme._id.toString().slice(10).slice(0,24)}});
})
.on('error', function(err){
//Getting `error` Something went wrong
})
.on('end', function(){
// finally end
});
您使用的是异步方法
find
,因此您应该使用承诺或回调来获得结果,这里有一些解决方案选择您想要的
//使用承诺
meme.find().then((memes) => {
memes.forEach((meme) => {
console.log(meme);
});
});
//使用回调
meme.find({}, (err, memes) => {
memes.forEach((meme) => {
console.log(meme);
});
});
//使用exec
meme.find().exec((err, memes) => {
memes.forEach((meme) => {
console.log(meme);
});
});
你能演示一下我应该如何将它应用到上面的代码中吗?当我运行代码时,它不会向我的控制台返回任何东西?
meme.find().exec((err, memes) => {
memes.forEach((meme) => {
console.log(meme);
});
});