我正在使用快递Js。 从MongoDB Atlas获得数据并尝试将数据发送到index.ejs页面后,为此,我已将对象转换为数组并使其全局化,但是我完全无法获取此数组或JSON对象。
app.get("/", function (request, response) {
model.find({},function (err, data1) {
if (err) {
response.send({
statusCode: 500,
message: 'Data did not selected'
})
} else {
let wholeArray = Object.keys(data1).map(key => data1[key]);
app.locals.wholeArray = wholeArray;
};
});
response.render("index");
});
我已经尝试过这种方法来访问我的索引页面,但是它也失败了。
var wholeArray = data1;
app.locals.wholeArray= wholeArray;
这是我用于访问JSON对象的index.ejs页面代码。
<% if(wholeArray.length) { %>
<% wholeArray.forEach(function(entry) { %>
<div class="panel panel-default">
<div class="panel-heading">
<div class="muted pull-right"><%= entry.today %></div>
<%= entry.title %>
</div>
<div class="panel-body">
<%= entry.content %>
</div>
</div>
<% }) %>
<% }else { %>
<span style="font-family:'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif; font-size: 18px; font-weight: 600;">No entries! </span><a href="/newEntry" class="btn btn-primary">Add Entry</a>
<% } %>
答案 0 :(得分:0)
您正在responde.render("index");
的回调函数之外调用mongo.find
,这意味着您不必等待要检索的数据来呈现“ index.ejs”文件。
您需要在response.render("index");
的回调函数中调用mongo.find
,如下所示:
app.get("/", function (request, response) {
model.find({},function (err, data1) {
if (err) {
response.send({
statusCode: 500,
message: 'Data did not selected'
})
} else {
let wholeArray = Object.keys(data1).map(key => data1[key]);
app.locals.wholeArray = wholeArray;
response.render("index");
};
});
});
请注意,您可以将本地人临时本地人作为第二个参数传递给res.render,例如:res.render("index", wholeArray);
此外,为什么还要创建一个数组?您可以直接发送从mongo返回的对象,这可能会更容易在模板引擎中进行操作。