Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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 ';TypeError:meme.find(…).forEach不是函数';在mongoose节点js中?_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript ';TypeError:meme.find(…).forEach不是函数';在mongoose节点js中?

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._

我想在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._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);
  });
});