簡體   English   中英

使用貓鼬返回特定字段

[英]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.phoneclient.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM