使用Mongoose返回特定字段
我正在努力完成一件非常容易的事情,但还是失败了。
我尝试做的是,当我在服务器上收到get
请求时,我希望返回所有文档,但只返回填充的特定字段。
我的架构如下
var clientSchema = new Schema({
name:{
type: String,
required: true
},
phone:{
type: String,
required: true
},
email:{
type: String,
required: true
},
address: {
type: String,
required: false
}
});
var orderDetailsSchema = new Schema({
//isn't added to frontend
confirmed:{
type: Boolean,
required: true,
default: false
},
service:{
type: String,
required: true
},
delivery:{
type: String,
required: false
},
payment:{
type: String,
required: false
},
status:{
type: String,
required: true,
default: "new order"
},
});
var orderSchema = new Schema({
reference:{
type: String,
required: true
},
orderdetails: orderDetailsSchema,
client: clientSchema,
wheelspec: [wheelSchema],
invoice:{
type: Schema.Types.ObjectId,
ref: 'Invoice'
}
});
我想要的是只返回client.phone
和client.email
加上orderdetails.status
,但如果可能仍保留reference
字段
我尝试使用lean()
和populate()
,但没有成功。我是不是遗漏了什么非常简单的东西?或者我想要达到的目标并不是那么容易?
谢谢!
解决方案
您可以按如下方式指定要返回的字段:
Order.findOne({'_id' : id})
.select('client.phone client.email orderdetails.status reference')
.exec(function(err, order) {
//
});
替代语法
Order.findOne({'_id' : id})
.select('client.phone client.email orderdetails.status reference')
.exec(function(err, order) {
//
});
我在这里做了一些假设,但您应该能够看到想法。
相关文章