更新猫鼬模式后,新输入的字段不会插入到已创建的集合中
Newly entered field does not inserted in already created collection after updating mongoose schema
我已经创建了一个 MongoDB 集合,使用 express Web 服务中的 mongoose 模式,几天后我发现需要在 mongoose 中添加一个新字段 table 所以在 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;
但是在更新我的用户架构之后当我插入一个包含名称、用户名和密码的新文档时在上面的集合中只插入用户名和密码,名称字段没有被插入。
名称也应该是模式中的一个对象,就像这样
var userSchema = new Schema({
name: {type: String},
username: { type: String, required: true, unique: true },
password: { type: String, required: true },
});
只需执行一个简单的步骤,为您创建的每个字段添加默认值。
示例
var userSchema = new Schema({
name: {type: String , default: ""},
username: { type: String, required: true, unique: true },
password: { type: String, required: true },
});
快乐编码
我已经创建了一个 MongoDB 集合,使用 express Web 服务中的 mongoose 模式,几天后我发现需要在 mongoose 中添加一个新字段 table 所以在 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;
但是在更新我的用户架构之后当我插入一个包含名称、用户名和密码的新文档时在上面的集合中只插入用户名和密码,名称字段没有被插入。
名称也应该是模式中的一个对象,就像这样
var userSchema = new Schema({
name: {type: String},
username: { type: String, required: true, unique: true },
password: { type: String, required: true },
});
只需执行一个简单的步骤,为您创建的每个字段添加默认值。 示例
var userSchema = new Schema({
name: {type: String , default: ""},
username: { type: String, required: true, unique: true },
password: { type: String, required: true },
});
快乐编码