在Jade迭代Mongoose属性

问题描述:

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

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

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 
... 

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

其实我该怎么写指定的方式呢?在红宝石中,我知道我可以做[ 'wordid', 'submitter' ].each,但是在Jade中有没有相当于?

您遇到对象的原型属性。您可以筛选出来与.hasOwnProperty

- each val, key in d.old 
- if(d.old.hasOwnProperty(key)) 
    li= key + ": " + val 

请记住,您也可以使用该方法toJSON的文件(mongoose doc of Document#toJSON)获取可在模板中使用的清洁JSON对象(而不必担心猫鼬文档的内部和方法)。实际上,您提到的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