是否有办法限制在模型级别的响应中发送哪些字段。假设我有以下架构:
var mySchema = new.mongoose.Schema({
public_field1: String,
public_field2: String,
private_field1: String,
private_field1: String,
})
假设我想在查询时获取所有这些字段,因为私有字段用于某些处理,但我只想将公共字段发送到最终响应。无需为每个路由功能指定它,最好的方法是什么?
答案 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);