想象一下下面的样本数据:
TESTDB
{
"_id": "56caf46a97bbe1b24163ef81",
"age": 40,
"eyeColor": "red"
},
{
"_id": "56caf46a460b1d91a0d882d8",
"age": 29,
"eyeColor": "green"
},
{
"_id": "56caf46afd859790720a2bb8",
"age": 27,
"eyeColor": "brown"
},
我必须渲染:
同时查看页面。
我使用快递,所以我应该使用res.render(' view',{data})。
我尝试过这样:
app.get('/somePage', function(req, res, next){
TestDB.find({}, function(err, dbs){
res.render('view', {'eyeColor' : dbs.eyeColor })
}).count(function(err, count){
// How can I render this 'count' to view at the sametime?
// If I render at here, I can't use above dbs.eyeColor,
// Same, If I render at above, I can't use count.
// Ok, There is a way to separate find() and count()
// And make a variable and then render with this,
// Should I do like that? I think there must be easy way.
})
});
答案 0 :(得分:0)
如果eyeColor
可能不同,distinct
可能会更好,如下所示。它会将eysColor
作为一个数组['red', 'green', 'brown']
返回,然后将其呈现为直接查看,count
可以通过colors.length
检索。
TestDB.distinct('eyeColor', function(error, colors) {
res.render('view', {'eyeColor' : colors})
});
如果eyeColor
可能是重复值,则可以按照评论中显示的Blackes进行
TestDB.find({}, function(error, vals) {
res.render('view', {'eyeColor' : vals.map(function(v) {return v.eyeColor;});})
});