将数据从mongo传递到ejs

时间:2015-12-23 14:12:57

标签: javascript mongodb ejs

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

2个文件:index.js(我用来连接到mongo,查找和分析数据),以及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%>');

在broswer&#34;查看源代码&#34;我可以看到

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

所以我知道数据正确传递,但任何使用它的尝试都失败了 - JS&#34;参见&#34;它为object Object而不是数组...

我该怎么办?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

这样您就可以将对象发送到视图

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

这样您就可以在视图中使用它

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

在这种情况下,您使用<%=,因为<%不会通过它后面的表达式打印返回的值。