我希望能夠擁有一個欄位,其型別是模式(或物件)串列之一,并且默認情況下是其中一個。
在我的腦海中它看起來像這樣(但這不起作用):
const fooSchema = new mongoose.Schema({
// ...
});
const barSchema = new mongoose.Schema({
// ...
});
const modelSchema = new mongoose.Schema({
field: {
type: mongoose.Schema.Types.Mixed,
enum: [fooSchema, barSchema],
default: fooSchema,
required: true
}
});
我將如何實作這一目標?我應該以不同的方式處理它嗎?
uj5u.com熱心網友回復:
我發現鑒別器有助于實作這一目標。我通過此評論和此帖子檢索到此資訊。下面是遇到此問題的其他任何人的示例實作。
// Type Base
const baseOptions = {
discriminatorKey: 'kind',
_id: false
}
const baseSchema = new mongoose.Schema({
kind: {
type: String,
enum: ['foo', 'bar'],
required: true
}
// ...
}, baseOptions );
// Types
const fooSchema = new mongoose.Schema({
// ...
}, { _id: false });
const barSchema = new mongoose.Schema({
// ...
}, { _id: false });
// Main Model
const modelSchema = new mongoose.Schema({
field: {
type: baseSchema,
default: {
kind: 'foo'
},
required: true
}
});
modelSchema.path( 'field' ).discriminator( 'foo', fooSchema );
modelSchema.path( 'field' ).discriminator( 'bar', barSchema );
const Model = mongoose.model( 'Model', modelSchema );
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/491391.html
上一篇:.netMauiReleaseCandidate3中的ContentPageBackgroundColor損壞?
下一篇:用xargs重命名一堆檔案
