更新猫鼬模式后,新输入的字段未插入已创建的集合中
Posted
技术标签:
【中文标题】更新猫鼬模式后,新输入的字段未插入已创建的集合中【英文标题】:Newly entered field does not inserted in already created collection after updating mongoose schema 【发布时间】:2017-10-10 01:47:38 【问题描述】:我已经使用来自 express Web 服务的 mongoose 模式创建了一个 MongoDB 集合,几天后我发现需要在 mongoose 表中添加一个新字段,因此在 mongoose 模式中添加了该字段并尝试插入新添加的字段的值以及现有字段,但不会插入到新添加的文档中。
因此,作为故障排除过程,我完全删除了现有的集合,然后将新文档插入到集合中,然后我发现它开始正常工作。我新插入的字段被插入到集合中。那么有没有其他方法可以在不删除整个集合的情况下使用 mongoose 在 MongoDB 中添加新字段。
我现有的用户集合架构:
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;
但是在更新我的用户架构后,当我插入一个包含名称、用户名和密码的新文档时,在上面的集合中只插入用户名和密码,名称字段不会被插入。
【问题讨论】:
【参考方案1】:只需执行一个简单的步骤,为您创建的每个字段添加默认值。 示例
var userSchema = new Schema(
name: type: String , default: "",
username: type: String, required: true, unique: true ,
password: type: String, required: true ,
);
快乐编码
【讨论】:
【参考方案2】:名称也应该是架构中的对象,像这样
var userSchema = new Schema(
name: type: String,
username: type: String, required: true, unique: true ,
password: type: String, required: true ,
);
【讨论】:
没关系,你如何定义你的领域。以上是关于更新猫鼬模式后,新输入的字段未插入已创建的集合中的主要内容,如果未能解决你的问题,请参考以下文章