强制返回所有字段,包括被覆盖的字段

时间:2015-06-15 19:00:35

标签: javascript node.js mongoose

我正在使用select运行mongoose查询。在模型的模式中,它被设置为排除两个字段,例如:

contents: {
    type: String
    select: false
},
password: {
    type: String
    select: false
}

但是,当我想在一个查询查询中包含这些字段时,例如:

App.findById(_appId)
    .exec(err, result){ ... }

不添加列出模型中每个字段的.select语句。我该怎么做?

2 个答案:

答案 0 :(得分:1)

我希望我更仔细地阅读the docs:P。这可以通过将以下select查询添加到上一个查询来实现:

.select('+contents +password');

它仍然取代了模型的其余部分:D

答案 1 :(得分:0)

如果您在字段上指定了select:false,则无法在查询中明确覆盖此行为:

.select('contents password')...

如果您不想要此行为,请删除select:false。如果您想保留行为,但发现自己重复进行查询,请考虑模型上的静态方法。

schema.statics.materialize = function (appId, cb) {

    return this.findById(appId).select('contents password').
        exec(cb);
};