0

我正在尝试从 Mongoose 对象输出属性列表,但我也得到了很多 Javascript 辅助函数。我想知道是否有一种干净的方法来输出我的 Mongoose 模式属性。

我的 Jade 显示代码如下所示:

h4 Legacy data
ul
- each val, key in d.old
    li= key + ": " + val

我的猫鼬模式定义是

Entry = new Schema({
    old : {
        submitter : String,
        table     : String,
        wordid    : Number
    }
});

但是当页面被渲染时,会同时输出一堆其他的 Javascript 属性和函数。例如

_scope: [object Object]
toObject: function () { return this.get(path); }
wordid: 2035
...

是否有一种简单的方法可以仅通过我的模式中的属性进行迭代?我可以使用指定的列表,但我想知道是否有更好的方法。

实际上,我将如何编写指定的方式?在 ruby​​ 中我知道我可以做到[ 'wordid', 'submitter' ].each,但 Jade 中是否有等价物?

4

2 回答 2

3

您遇到了对象的原型属性。您可以使用.hasOwnProperty

- each val, key in d.old
- if(d.old.hasOwnProperty(key))
    li= key + ": " + val
于 2011-09-05T14:55:25.453 回答
1

请记住,您还可以使用toJSON文档上的方法(Document#toJSON 的 mongoose doc)来获取可以在模板中使用的干净 JSON 对象(无需担心 mongoose 文档的内部结构和方法)。其实toObject你说的方法和这个差不多toJSON,你可以去看看

例如:

doc = EntryModel({old: {submitter: "s", table: "tableS", wordid: "666"}})
console.log(b.toJSON())
// outputs:
{
    "_id": "51fea037434b242816000002",
    "old": {
        "submitter": "s",
        "table": "tableS",
        "wordid": 666
    }
}
// Is a plain JSON object without any other property or method
于 2013-08-04T18:46:24.877 回答