【问题标题】:Interating through embedded data with Jade and Express使用 Jade 和 Express 遍历嵌入式数据
【发布时间】:2014-05-11 07:46:21
【问题描述】:

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

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

我正在使用 Jade 模板来显示适用于父母姓名的数据,但我不知道如何让子数据显示。下面的代码显示了我认为会发生的 Children 的 [object Object]。

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

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

【问题讨论】:

  • 在你上面的对象中,Children 不是一个数组,它是一个对象。

标签: node.js mongodb express pug


【解决方案1】:

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

我认为如果你从正确的对象开始,你的玉码就在正确的轨道上

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

您在评论中问为什么该对象是“坏”的,这是因为(我清理了因为“年龄”属性后面有一些尾随逗号):

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 获得上述对象的?

【讨论】:

  • 我正在从 mongodb 中提取数据,因为它是从不同的系统存储的,所以我对此没有太多控制权。需要重复字段,因为它代表关系数据。每个父母都可以有多个孩子,所以我不确定这有什么“坏处”。每个孩子都需要相同的属性名称,除非我在这里遗漏了一些明显的东西。也许它需要在发送到 Jade 之前重新格式化?
  • 我删除了帖子中的尾随逗号。这就是我手动输入示例所得到的。我只是在做 db.collection('mydata').find() 从 mongodb 获取数据。
  • 也许其他人想尝试一下。除非发生了一些不寻常的事情,否则 Mongo 将返回一个数组,而不是具有重复属性的对象,如果是这样,您可能应该将此作为错误报告给 Mongo 人(但我认为这不太可能)。也许直接粘贴从 Monogo 收到的对象的控制台日志,例如我在更新的答案中说明的。
猜你喜欢
  • 2016-05-02
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-12
  • 2014-08-10
相关资源
最近更新 更多