2011-09-02 79 views
0

我試圖從一個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中有沒有相當於?

回答

2

您遇到對象的原型屬性。您可以篩選出來與.hasOwnProperty

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

請記住,您也可以使用該方法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