我仍在学习 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/