使用Jade和Express迭代嵌入数据

时间:2014-03-31 19:34:35

标签: node.js mongodb express pug

我有一个像mongodb一样嵌入数据的数据结构。

{
    "Parent Name": "John",
    "Children": {
        "Child": {
            "Name": "Joe",
            "Age": "10"
        },
        "Child": {
            "Name": "Mary",
            "Age": "6"
        }
    }
}

我正在使用Jade模板显示适用于父级名称的数据,但我无法弄清楚如何显示子数据。下面的代码显示了我认为会发生的儿童的[对象]。

each parent, i in parents
    tr
        td #{parent.ParentName}
        td #{parent.Children}

我正试图让儿童的名字和年龄显示出来。我确定我在这里缺少一些简单的东西,但我是Jade,Express和Mongodb的新手,所以我无法弄清楚或找到解释它的帖子。我试过......

each child, c in parent.Children

parent.Children[0].Name

但它们似乎不起作用。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

为了澄清我的评论,我认为您的问题的根源是您的对象不包含Children的数组,它包含另一个对象,并且因为它具有重复的属性名称,所以它是一个坏对象。

我认为如果你从正确的对象开始,你就可以使用你的玉代码

{
    "ParentName": "John",
    "Children": [
        {
            "Name": "Joe",
            "Age": "10"
        },
        {
            "Name": "Mary",
            "Age": "6"
        }       
    ]
}

你问为什么这个物品是坏的'在你的评论中,因为这个(我清理了因为" age"属性之后有一些尾随逗号):

var myobj = {
    "ParentName": "John",
    "Children": {
        "Child": {
            "Name": "Joe",
            "Age": "10"
        },
        "Child": {
            "Name": "Mary",
            "Age": "6"
        }
    }
};

console.log(require('util').inspect(myobj));

产生这个:

{ ParentName: 'John',
  Children: { Child: { Name: 'Mary', Age: '6' } } }

因为您有重复的属性名称。你如何从Mongo获得上述对象?