![](/img/trans.png)
[英]returning all comments by a specific user without other document fields using mongoose
[英]Returning specific fields with 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) {
//
});
我在這里做了一些假設,但你應該能夠看到這個想法。
只需這樣做:-
訂單是在貓鼬中注冊的型號名稱。
Order.findById(id) // set id you have to get
. populate('client')
.select('client.phone client.email orderdetails.status reference')
.exec(function(err, order) {
//
});
您可以使用投影。
await Order.findById(diaryId, {phone: 1, email: 1, status: 1})
如果 phone:1 設置為 1,則包括在內,如果 phone:0 設置為 1,則將其排除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.