鉴于此DB集合结构:
{
"_id" : ObjectId("59ba5bf6fa12aa446c097793"),
"tab" : "tab1",
"tabfeeds" : [
{
"url" : "//url1",
"limit" : 4,
"type" : "text"
},
{
"url" : "//url2",
"limit" : 8,
"type" : "normal"
}
]
}
{
"_id" : ObjectId("59ba73a6fa12aa446c097794"),
"tab" : "tab2",
"tabfeeds" : [
{
"url" : "//url5",
"limit" : 4,
"type" : "normal"
}
]
}
我可以像这样获得所有“标签”集合:
router.get('/tabs', function(req, res) {
var db = req.db;
var collection = db.get('tabs');
collection.find({},{},function(e,docs){
res.json(docs);
});
});
然后:
$.getJSON( '/feeds/tabs', function( data ) {
$.each(data, function(){
tablistcontent += '<th rel="' + this.tab + '">' + this.tab + '</th>';
});
});
但是如何为每个tabfeeds
列出tab
的每个元素?
答案 0 :(得分:2)
所以你需要做的是在你$.each
电话中创建的匿名函数中创建一个参数。这将是您在阵列中的当前项目的索引。然后,您将使用该索引在名为data
的数组中获取与该索引相对应的数据。
然后,您将查看您所在的对象并获取tabfeeds
属性,该属性将是一个数组。然后,为每个选项卡对象遍历tabfeeds
数组,并对该数据执行任何操作。
// outside up here you'll have a variable to hold tab feed data
// i'll call it tabfeedData for example
var tabfeedData = '';
// loop through all the data
$.each(data, function(tab) {
var tabfeeds = data[tab]["tabfeeds"]; // get array of tabfeeds from data variable
tablistcontent += '<th rel="' + this.tab + '">' + this.tab + '</th>';
// loop through tabfeeds and do whatever you need to (like construct a string with attributes from the tabfeed object)
$.each(tabfeeds, function(tabfeed) {
tabfeedData += "<tr data-url='" + this.url + "'>";
});
});