0

Mongooseオブジェクトからプロパティのリストを出力しようとしていますが、Javascriptヘルパー関数もたくさんあります。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が、ジェイドに同等のものはありますか?

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 に答える