2016-01-24 44 views
1

我需要创建一个与现有模型(原始)几乎相同的模型(NEW)。 NEW模型将有一个新的字段(“expiresAt”),我想用于MongoDB生存时间(TTL)功能。 出于设计目的,我不想将NEW模型存储在与ORIGINAL相同的集合中(只有NEW模型应具有TTL功能)。如何继承猫鼬模型并将其存储在其他集合中

例子:

//ORIGINAL schema 

var OriginalSchema = new Schema({ 

    id: { type: Schema.Types.ObjectId }, 
    name: { type: String }, 
    description: { type:String }, 
}); 


//NEW schema 

var NewSchema = new Schema({ 

    id: { type: Schema.Types.ObjectId }, 
    name: { type: String }, 
    description: { type:String }, 
    expiresAt: { 
     type: Date, 
     default: Date.now, 
     expires: 24*60*60 
    } 
}); 

怎么可以通过继承这个实现?

回答

0

Mongoose discriminators是模式继承机制。它们使您可以在同一个基础MongoDB集合之上创建具有重叠模式的多个模型。在这个link讨论了一些细节。

var OriginalSchema = new Schema({ 
    id: { type: Schema.Types.ObjectId }, 
    name: { type: String }, 
    description: { type:String }, 
}); 

var NewSchema = new Schema({ 
    expiresAt: { 
     type: Date, 
     default: Date.now, 
     expires: 24*60*60 
    } 
}); 

var Original = mongoose.model('Original', OriginalSchema); 
var NewSch = Original.discriminator('NewSch', NewSchema); 
相关问题