node.js - nodejs + mongoose - 如何在nodejs中使用forEach

标签 node.js mongodb mongoose

我仍在学习 Node.js 和 mongodb。我正在尝试使用 nodejs 和 mongoose 编写简单的应用程序。我的 Mongoose 架构:

var todoSchema = new Schema({
  task: String,
  description: String,
  date: Date,
  status: String,
  checklist: Boolean,
  pic: String
});

我有一个名为 todos 的集合,我正在尝试使用以下代码获取 todos 的内容:

apiRoutes.route('/todos/detail')
.get(function(req, res){
    Todo.distinct( "pic" ).each(function(doc){
        Todo.find({"pic": doc.pic}, function(err, todo){
        if (err)
            res.send(err);

        var finalResult = [];
        finalResult.push(todo);
        res.send(finalResult);
        });
    });
});

但是我收到了这个错误:

Object #<Query> has no method 'each'

有办法解决这个问题吗?非常感谢您的帮助。

最佳答案

根据我在您的问题中收集的信息,您不一定需要循环,因为您正在迭代不同的图片数组,您正在使用它来查询每个图片的集合,即 本质上相当于在发送从查询返回的文档结果数组时查询整个集合:

apiRoutes.route('/todos/detail').get(function(req, res){
    Todo.find({"pic": { "$exists": true }}, function(err, todos){
        if (err) res.send(err);
        res.send(todos);
    });
});

除非您想获得不同的图片列表,否则您可以尝试以下方法来获取包含这些图片的待办事项:

apiRoutes.route('/todos/detail').get(function(req, res){
    Todo.find().distinct('pic', function(error, pics) {
        // pics is an array of all pics
        Todo.find({"pic": { "$in": pics } }, function(err, todos){
            if (err) res.send(err);
            res.send(todos);
        });
    });
});

关于node.js - nodejs + mongoose - 如何在nodejs中使用forEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33829425/

相关文章:

node.js - 如何在 mongooseJS 中相互连接模式?

javascript - 如何循环数组生成js代码?

javascript - RabbitMQ:前一项完成后消费项目

php - mongodb-php 更新 $pull

mongodb - 在没有 YUM 的 CentOs 7 上安装 MongoDB。有 rpm 文件但没有 tgz

python - MongoDB 不是比 MySQL 快吗?

date - 如何使用 Node.js 和 Mongoose 查询日期?

javascript - 如何在 Electron 中使用 node-pty 正确启动 shell 环境?

node.js - 关于nodejs线程的一些困惑

windows - ANSI 转义序列不会打印到 Windows 上的标准输出