2016-04-30 65 views
1

基本上標題說的是什麼。我在Schema裏面有這個:在模式定義中取消選擇貓鼬中的數組

meta: [{ 
    event: {type: Schema.Types.ObjectId, ref: 'Event', required: true, unique: true}, 
    views: {type: Number, default: 0}, 
    clicks: {type: Number, default: 0} 
}] 

我想在默認情況下定義爲mongoose而不是選擇那個字段。 喜歡的東西:

otherField: {type: String, select: false} 

我已經試過這一點,但沒有奏效:

meta: { 
    type: [{ 
     event: {type: Schema.Types.ObjectId, ref: 'Event', required: true, unique: true}, 
     views: {type: Number, default: 0}, 
     clicks: {type: Number, default: 0} 
    }], 
    select: false 
} 

它甚至有可能取消對架構創建複雜陣列? 我肯定知道這樣做的工作:

meta: {type: Array, select: false} 

但是模式不正確定義的方式。

+0

我想你說的代碼:「我已經試過,但它沒有工作「,並且它默認排除了任何'find'輸出中的'meta'。這是與Mongoose 4.4.14。可能是 – JohnnyHK

+0

,但嘗試將項目添加到列表中,那是行不通的。 –

+0

您是否可以更新您的問題以包含您用於將項目添加到列表中的代碼? – JohnnyHK

回答

0

你可以做的是創造一個新的子模式

var metaSchema = new mongoose.Schema({ 
    event: {type: Schema.Types.ObjectId, ref: 'Event', required: true, unique: true}, 
    views: {type: Number, default: 0}, 
    clicks: {type: Number, default: 0} 
}); 

,並選擇使用它:假

meta: {type: [metaSchema], select: false}