你能在mongoosejs中为对象设置部分模式吗?

时间:2013-12-19 22:22:47

标签: node.js mongodb mongoose

您可以在mongoosejs中为对象设置部分架构吗?假设我有一个person对象,我想验证它总是有一个first_name和last_name字段。但我也希望允许用户保存他们选择的其他字段。假设我有以下架构:

var userSchema = new mongoose.Schema({
  first_name  : { type: String, required: "first name required" }
  last_name   : { type: String, required: "last name required" }
})

但我希望该应用能够发布此内容:

{
  first_name: "john",
  last_name: "doe",
  field_not_in_schema: "info"
}

这可能吗?

1 个答案:

答案 0 :(得分:2)

您可以使用Schema.Types.Mixed字段,这是一个自由格式的JS对象:

var userSchema = new mongoose.Schema({
  first_name  : { type: String, required: "first name required" },
  last_name   : { type: String, required: "last name required" },
  data        : { type: Schema.Types.Mixed }
})

以下是填充它的方法:

var user = new User({
  first_name: 'John',
  last_name: 'Doe',
  data: { sex: 'Male', eyeColor: 'blue' }
});
user.save(...);