更新mongoose模式后,新input的字段不会插入已创build的集合中

我已经创build了一个MongoDB集合,使用快速web服务中的mongoose模式,几天后,我发现在mongoose表中需要一个新的字段,所以在mongoose模式中添加了这个字段,并尝试插入一个新添加字段的值,它不会被插入到新添加的文档中。

所以我做了一个故障排除过程,我完全删除了我现有的集合,然后将我的新文档插入集合,然后我发现它开始正常工作。 我新插入的字段被插入到集合中。 那么有没有其他的方式来在MongoDB中使用mongoose添加一个新的字段而不删除整个集合。

我现有的用户集合模式:

var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new Schema({ username: { type: String, required: true, unique: true }, password: { type: String, required: true }, }); var User = mongoose.model('User', userSchema); module.exports = User; 

当我插入一个新的文件,用户名和密码在上面的集合它工作正常。

添加新字段(名称)后,我的新用户集合模式:

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new Schema({ name: String, username: { type: String, required: true, unique: true }, password: { type: String, required: true }, }); var User = mongoose.model('User', userSchema); module.exports = User; 

但更新我的用户架构时当我插入一个新的文件名称,用户名和密码在上面的集合只插入用户名和密码,名称字段不会被插入。

只需做一个简单的步骤,将默认值添加到您创build的每个字段。 例

 var userSchema = new Schema({ name: {type: String , default: ""}, username: { type: String, required: true, unique: true }, password: { type: String, required: true }, }); 

快乐的编码

名字也应该是这样的模式中的一个对象

 var userSchema = new Schema({ name: {type: String}, username: { type: String, required: true, unique: true }, password: { type: String, required: true }, });