无法将JSON对象转换为全局数组

时间:2019-03-08 21:09:28

标签: arrays node.js json express

我正在使用快递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>
<% } %>

1 个答案:

答案 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返回的对象,这可能会更容易在模板引擎中进行操作。