首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mongoose节点js中'TypeError: meme.find(...).forEach不是一个函数‘?

在mongoose节点js中'TypeError: meme.find(...).forEach不是一个函数‘?
EN

Stack Overflow用户
提问于 2018-06-24 20:11:23
回答 5查看 5.3K关注 0票数 3

我想在MongoDB中遍历我的集合,所以我尝试了.forEach来执行操作,但看起来这不是正确的方法。每次我尝试运行它时都会出现错误:TypeError: meme.find(...).forEach is not a function

这是我的代码:

代码语言:javascript
复制
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来执行操作。

如果能帮助我解决这个问题,我将不胜感激。

谢谢。

EN

回答 5

Stack Overflow用户

发布于 2018-06-24 21:15:09

您使用的是异步方法find,因此您应该使用promises或callback来获得结果,这里有一些解决方案选择您想要的内容

//使用promises

代码语言:javascript
复制
meme.find().then((memes) => {
  memes.forEach((meme) => {
    console.log(meme);
  });
});

//使用回调

代码语言:javascript
复制
meme.find({}, (err, memes) => {
  memes.forEach((meme) => {
    console.log(meme);
  });
});

//使用exec

代码语言:javascript
复制
meme.find().exec((err, memes) => {
  memes.forEach((meme) => {
    console.log(meme);
  });
});
票数 7
EN

Stack Overflow用户

发布于 2021-11-06 09:57:12

您应该尝试以下操作:

代码语言:javascript
复制
const f = async () => {
  for await (let m of meme.find()) {
    // do something with m
  }
}

mongoose "find“函数返回query,可迭代。因此,不需要一次获取所有文档。

票数 0
EN

Stack Overflow用户

发布于 2018-06-24 20:20:36

find方法是异步函数,因此它不返回结果,而是需要传递回调

Here您有该方法的文档

所以你应该打个电话。如下所示:

代码语言:javascript
复制
meme.find().exec(function (err, docs) {
    // something
});
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51009832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档