【问题标题】:Passing data from mongo to ejs将数据从 mongo 传递到 ejs
【发布时间】:2015-12-23 14:12:57
【问题描述】:

(这是我在这里的第一个问题,我很兴奋:))

2 个文件:index.js(我用来连接到 mongo,查找和 toArray 数据)和 admin.ejs,我想在其中显示数据(用户记录:用户名、名字、姓氏...)。

index.js:

var db = MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
    if(err)
        throw err;

    db.collection("Users").find().toArray(function (err, result) {
        var i, count;
        for (i = 0, count = result.length; i < count; i++) {
            myArr.push(result[i]);
        }
        myArr = JSON.stringify(myArr);
    });

    console.log(myArr); // just for testing
    console.log("connected to the mongoDB !");
});

app.get('/', function (req, res) {
    res.render('Admin', {
        myVar: myArr
    });
});

admin.ejs:

var myOtherVar = JSON.parse('<%-myVar%>');

在浏览器“查看源代码”我可以看到

var myOtherVar = JSON.parse('[{"_id":"567a6fd307200cb90f7af961","Username":"Yogev" ...

所以我知道数据正确传递,但任何尝试使用它都会失败 - JS 将其“视为”object Object 而不是数组...

我该怎么办?

【问题讨论】:

    标签: javascript mongodb ejs


    【解决方案1】:

    您只需要使用对象表示法来访问数据。

    console.log(myOtherVar[0].Username)
    // Returns 'Yogev'
    

    【讨论】:

      【解决方案2】:

      这样你将一个对象发送到视图

      res.view('Admin',{ myVar : myArr});
      

      这样你在视图中使用它

      <h1> <%= myVar[0].property %></h1>
      

      在这种情况下,您使用&lt;%=,因为&lt;% 不会通过紧随其后的表达式打印返回值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-28
        • 2016-11-05
        • 1970-01-01
        • 2019-07-19
        • 1970-01-01
        • 2016-03-01
        • 1970-01-01
        相关资源
        最近更新 更多