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文档 。