Итерация свойств мангуста в нефрите - PullRequest
0 голосов
/ 02 сентября 2011

Я пытаюсь вывести список свойств из объекта 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, которые выводятся одновременно. например,

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

Есть ли простой способ перебора только свойств моей схемы? Я мог бы использовать указанный список, но мне было интересно, есть ли лучший способ.

На самом деле, как бы я написал указанным способом? В ruby ​​я знаю, что могу сделать [ 'wordid', 'submitter' ].each, но есть ли эквивалент в Jade?

Ответы [ 2 ]

3 голосов
/ 05 сентября 2011

Вы сталкиваетесь со свойствами прототипа объекта. Вы можете отфильтровать их с помощью .hasOwnProperty

- each val, key in d.old
- if(d.old.hasOwnProperty(key))
    li= key + ": " + val
1 голос
/ 04 августа 2013

Помните, что вы также можете использовать метод toJSON в документе ( mongoose doc для Document # toJSON ), чтобы получить чистый объект 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...