在expressjs.mongoosejs中是否有一种方法可以默认设置在响应中返回哪些字段?

时间:2013-11-05 20:54:49

标签: javascript node.js express mongoose

是否有办法限制在模型级别的响应中发送哪些字段。假设我有以下架构:

var mySchema = new.mongoose.Schema({
    public_field1: String,
    public_field2: String,
    private_field1: String,
    private_field1: String,
})

假设我想在查询时获取所有这些字段,因为私有字段用于某些处理,但我只想将公共字段发送到最终响应。无需为每个路由功能指定它,最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以在架构中的字段定义上使用select属性来确定默认情况下是否包含该字段。例如,要默认排除私有字段:

var mySchema = new.mongoose.Schema({
    public_field1: String,
    public_field2: String,
    private_field1: {type: String, select: false},
    private_field2: {type: String, select: false}
})

然后,如果您想要这些字段,可以通过以下方式将其包含在结果中:

MyModel.find().select('+private_field1 +private_field2').exec(callback);