我正在尝试从Mongoose对象输出属性列表,但我也获得了很多Javascript帮助函数。我想知道是否有一种干净的方式来输出我的Mongoose架构属性。
我的Jade显示代码如下:
h4 Legacy data
ul
- each val, key in d.old
li= key + ": " + val
我的Mongoose架构定义是
Entry = new Schema({
old : {
submitter : String,
table : String,
wordid : Number
}
});
但是当呈现页面时,会有许多其他Javascript属性和函数同时被输出。 e.g。
_scope: [object Object]
toObject: function () { return this.get(path); }
wordid: 2035
...
有没有一种简单的方法来迭代我的架构中的属性? 我可以使用指定的列表,但我想知道是否有更好的方法。
实际上,我该怎么写指定的方式?在红宝石中,我知道我可以做[ 'wordid', 'submitter' ].each
但在玉中是否有相同的东西?
答案 0 :(得分:3)
您遇到了对象的原型属性。您可以使用.hasOwnProperty
- each val, key in d.old
- if(d.old.hasOwnProperty(key))
li= key + ": " + val
答案 1 :(得分:1)
请记住,您还可以在文档(mongoose doc of Document#toJSON)上使用方法toJSON
来获取可在模板中使用的干净JSON对象(无需担心mongoose文档的内部和方法)。事实上,您提到的toObject
方法类似于toJSON
,您可能想要check it out。
例如:
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