在其他地方,有人建议使用utils.inherits扩展架构。另一种简单的方法是使用设置简单地设置对象并从中创建模式,如下所示:
var settings = { one: Number};new Schema(settings);settings.two = Number;new Schema(settings);不过,这有点丑陋,因为您要修改同一对象。我也希望能够扩展插件和方法等。因此,我的首选方法如下:
function UserSchema (add) { var schema = new Schema({ someField: String }); if(add) { schema.add(add); } return schema;}var userSchema = UserSchema();var adminSchema = UserSchema({ anotherField: String});哪个恰好回答了您的第二个问题, 是的,您可以add()
字段。因此,要修改Schema的某些属性,可以对上述函数进行修改以解决您的问题:
function UserSchema (add, nameAndPhoneIsRequired) { var schema = new Schema({ //... firstname: {type: String, validate: firstnamevalidator, required: nameAndPhoneIsRequired}, lastname: {type: String, validate: lastnamevalidator, required: nameAndPhoneIsRequired}, phone: {type: String, validate: phonevalidator, required: nameAndPhoneIsRequired}, }); if(add) { schema.add(add); } return schema;}


