我有以下代码:
var Schema = mongoose.Schema;
var personSchema = new Schema({
firstname: String,
lastname: String,
address: String,
});
var Person = mongoose.model('humans', personSchema);
var john = Person({ //will turn into a new object.
firstname: "john",
lastname: "doe",
address: "somewhere",
});
//save the user
john.save(function(err){
if(err) throw err;
console.log('person saved!');
});
现在,在我的数据库中,我有一个名为human with的集合 名字:“约翰”, 姓氏:“doe”, 地址:“某处”, 正如你在上面看到的那样。我的问题是:在人类集合中是否有一种方法,将有一个文档具有您在上面看到的结构,另一个具有一些新字段:
firstname: String,
lastname: String,
address: String,
car: String,
office: String
我尝试了几种方法来重新定义personSchema的结构 但它总是给我同样的错误,编译后不能覆盖模型。“
感谢您的时间。
答案 0 :(得分:0)
发生错误是因为您已经定义了架构,然后再次定义架构。实例化一次模式,并使make Global对象访问模式。
更改您的个人架构,并添加新字段
var personSchema = new Schema({
firstname: String,
lastname: String,
address: String,
car: String,
office: String
});
填充后不包含添加字段的文档将具有此键但具有未定义的值。
为了不忽略新属性,您可以解除模式
var personSchema = new Schema({
firstname: String,
lastname: String,
address: String,
car: String,
office: String
}, {strict: false});
您也可以使用混合类型将任何内容设置为属性
var personSchema = new Schema({
firstname: String,
lastname: String,
additional: Mixed
});
并在其他字段中设置其他属性。