我正在使用Express
在Mongo
中开发一个应用程序。我要做的是从records
读取多个db
并将其发送到view
。我必须在render
中table
router
。这是我到目前为止所做的:
我的router.route('/dashboard').get(function (req, res, next) {
res.format({
html: function () {
mongoose.model('Register').find({'userid': req.session.email}, function (err, users) {
var userMap={};
users.forEach(function(user){
userMap[user._id]=user;
});
res.json(userMap);
});
}
});
});
:
table
tbody
tr
td #{user.pid}
td #{user.sid}
td #{user.rfname}
td #{user.des}
我想在视图中渲染它:
record
我参考this,但它没有说明如何访问view
中的每个EntityManager
?有什么帮助吗?
答案 0 :(得分:4)
而不是尝试这样,所以你将所有数据都放入用户对象res.json({user:userMap});这样您就可以使用用户对象访问它。因此,使用该对象可以访问user [0] .pid
等元素router.route('/dashboard').get(function (req, res, next) {
mongoose.model('Register').find({'userid': req.session.email},function (err, users) {
var userMap={};
users.forEach(function(user){
userMap[user._id]=user;
});
res.render('myviewname',{user:userMap});
});
});
答案 1 :(得分:1)
将res.send()替换为res.json(),以便将json对象放入视图中。
答案 2 :(得分:0)
如果使用的是Express Generator或类似的dir结构,则可以将来自控制器的数据作为对象传递给视图,并使用for循环遍历每个记录并在视图中打印。查看下面的示例以获得更好的主意:
routes / users.js(控制文件)
/* GET users listing. */
router.get('/', async (req, res) => {
const userData = await UserModel.find({}); // I'm using mongoose schema and model
res.render('user', {userData: userData});
});
views / user.jade(查看文件)
table(border='1')
tbody
tr
th First Name
th Last Name
th Email
th Phone
for user in userData
tr
td #{user.firstName}
td #{user.lastName}
td #{user.email}
td #{user.phone}
这是我的数据:
[{ "_id" : ObjectId("5f9665e318ec5a064a7ae4ad"), "firstName" : "Anil", "lastName" : "Raj", "email" : "anil@gmail.com", "phone" : "7861171771", "password" : "123456" }, { "_id" : ObjectId("5f966eb518ec5a064a7ae4ae"), "firstName" : "Arun", "lastName" : "Raj", "email" : "arun@gmail.com", "phone" : "7861171773", "password" : "123456" }]