nodejs + mongoose – 如何在nodejs中使用forEach

我还在学习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); }); }); 

除非你想得到一个明确的照片列表,得到与这些照片的todo项目,你可以尝试以下方法:

 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); }); }); }); 

对于开始,您应该尝试使用.forEach()而不是.each()第一个:)在这里您可以看到forEach文档 。