上一篇我們將Objects轉成獨立的資料,接著我們可以把這些資料保存在一個陣列裡。
這裡我們只保存"username"的部分。請看以下"userlist"的router修改版:
router.get('/userlist', function(req, res) {
var db = req.db;
var collection = db.get('usercollection');
collection.find({},{},function(e,docs){
var name = [];
var objKey = Object.keys(docs);
objKey.forEach(function(objectid){
var itemkeys = Object.keys(docs[objectid]);
itemkeys.forEach(function(itemkey) {
var itemvalue =docs[objectid][itemkey];
console.log(objectid+': '+itemkey+' = '+itemvalue);
if (itemkey == "username") {
name.push(itemvalue);
}
})
})
console.log(name);
res.render('userlist', {
"userlist" : name
});
});
});
首先我們宣告一個陣列:
var name = [];
接著,當我們找到所有資料:objectid, itemkey, itemvalue,之後,比對"itemkey",如果"itemkey"是"username"(不要"_id"與"email"),我們就把它對應的值(itemvalue)保存到"name"陣列。加入資料到陣列可以用陣列提供的方法:push()。
if (itemkey == "username") {
name.push(itemvalue);
}
這樣我們就能將所有的"username"的值保存在"name"陣列裡。最後用console.log(name)來看看效果並送到模版引擎:res.render()。以下是console的顯示:
[ 'zack', 'testuser2', 'testuser3' ]
結果正確。
(本文同步發表於: NodeJust.com )