Node.js NodeJS、Express、MongoDB-将多个Mongoose查询传递到呈现页面
正在开发一个相当简单的待办应用程序,我计划根据状态在一个网站上设置三个栏目;“待定”、“进行中”、“完成” 我的模型如下所示:Node.js NodeJS、Express、MongoDB-将多个Mongoose查询传递到呈现页面,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,正在开发一个相当简单的待办应用程序,我计划根据状态在一个网站上设置三个栏目;“待定”、“进行中”、“完成” 我的模型如下所示: var TaskSchema = new mongoose.Schema({ title: String, description: String, date: { type: Date, default: Date.now }, status: String }); 在新的邮政路线上,有一个下拉列表来选择状态 现在,当我呈现索引页面,
var TaskSchema = new mongoose.Schema({
title: String,
description: String,
date: { type: Date, default: Date.now },
status: String
});
在新的邮政路线上,有一个下拉列表来选择状态
现在,当我呈现索引页面,显示三列时,我想我可以做三个mongoose查询,一个foreach状态,或者有一个查询返回所有“任务”,并在索引页面上用Javascript过滤它们。(顺便说一下,使用EJS)
我尝试了以下方法来创建一个接受参数“status”的函数,然后在此基础上执行mongoose查询。
然后创建一个调用此函数的变量,并在呈现页面时传递它
router.get('/', function (req, res) {
function getTasks(status){
var query = Task.find({ status:status});
return query;
}
var pending = getTasks('pending');
console.log(pending);
res.render("tasks/index", {tasks: pending});
});
在索引中,我有一个简单的:
<% tasks.forEach(function(task){ %>
<li><%= task.title %></li>
<%})%>
但是,运行此操作会导致错误:
TypeError: c:\x\Dev\ToDo\views\tasks\index.ejs:3
1| <% include ../partials/header %>
2|
>> 3| <% tasks.forEach(function(task){ %>
4| <li><%= task.title %></li>
5| <%})%>
6| <div class="container-fluid">
tasks.forEach is not a function
at eval (eval at compile (c:\Users\x\Dev\ToDo\node_modules\ejs\lib\ejs.js:618:12), <anonymous>:22:14)
TypeError:c:\x\Dev\ToDo\views\tasks\index.ejs:3
1|
2|
>> 3|
4 |
5|
6|
tasks.forEach不是一个函数
评估时(编译时评估)(c:\Users\x\Dev\ToDo\node\u modules\ejs\lib\ejs.js:618:12),:22:14)
有没有想过解决这个问题的最好办法是什么
谢谢 方法返回一个Promise
对象
router.get('/', function(req, res) {
function getTasks(status) {
return Task.find({
status,
});
}
getTasks('pending')
.then((docs) => {
console.log(docs);
res.render('tasks/index', {
tasks: docs,
});
})
.catch((err) => {
console.error(err);
});
});