将数据从 mongo 传递到 ejs
Passing data from mongo to 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%>');
在浏览器里"view source code"我可以看到
var myOtherVar = JSON.parse('[{"_id":"567a6fd307200cb90f7af961","Username":"Yogev" ...
所以我知道数据正确传递,但任何使用它的尝试都失败了 - JS "see" 它作为 object Object
而不是数组...
我该怎么办?
您只需要使用对象表示法来访问数据。
console.log(myOtherVar[0].Username)
// Returns 'Yogev'
这样您就可以将对象发送到视图
res.view('Admin',{ myVar : myArr});
这样你就可以在视图中使用它了
<h1> <%= myVar[0].property %></h1>
在这种情况下,您使用 <%=
,因为 <%
不会通过紧随其后的表达式打印返回值。
(这是我的第一个问题,我很兴奋:))
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%>');
在浏览器里"view source code"我可以看到
var myOtherVar = JSON.parse('[{"_id":"567a6fd307200cb90f7af961","Username":"Yogev" ...
所以我知道数据正确传递,但任何使用它的尝试都失败了 - JS "see" 它作为 object Object
而不是数组...
我该怎么办?
您只需要使用对象表示法来访问数据。
console.log(myOtherVar[0].Username)
// Returns 'Yogev'
这样您就可以将对象发送到视图
res.view('Admin',{ myVar : myArr});
这样你就可以在视图中使用它了
<h1> <%= myVar[0].property %></h1>
在这种情况下,您使用 <%=
,因为 <%
不会通过紧随其后的表达式打印返回值。