猫鼬在4.2.7版本中创建了一个新的单子文档特性(文档和特征请求),允许一个嵌入式子文档模式,它的行为方式是一对多的子文档。
在父级保存时创建默认的单个子文档的最佳方法是什么?
var UserPermisssionsSchema = new mongoose.Schema({
siteAdmin: {
type: Boolean,
default: false,
}
});
var UserSchema = mongoose.Schema({
fname: String,
lname: String,
permissions: UserPermisssionsSchema
});
我希望在创建父用户文档时使用默认值创建permissions
字段。
这样做是行不通的:
var UserSchema = mongoose.Schema({
fname: String,
lname: String,
permissions: {
type: UserPermisssionsSchema ,
default: UserPermisssionsSchema
}
});
发布于 2016-02-18 17:37:12
请试试这个
var PerSchema = new mongoose.Schema({
siteAdmin: {type: Boolean, default: false}
});
var UserSchema = mongoose.Schema({
fname: String,
lname: String,
permissions: { type: PerSchema, default: () => ({}) },
});
用Mongoose v4.4.3
测试它
var User = mongoose.model('User', UserSchema);
function setUser() {
var u = new User({
fname: 'asa',
lname: 'dddd'
});
u.save(function(err) {
if (err)
console.log(err);
else
console.log('save user successfully');
});
}
结果是
{
"_id" : ObjectId("56c68321a548be98198ebb71"),
"fname" : "asa",
"lname" : "dddd",
"permissions" : {
"_id" : ObjectId("56c68321a548be98198ebb70"),
"siteAdmin" : false
},
"__v" : 0
}
如果您想要permissions
的默认值是{}
。请按下面的方式试一试
var PerSchema = mongoose.Schema({
siteAdmin: {type: Boolean}
}, {_id: false});
var UserSchema = mongoose.Schema({
fname: String,
lname: String,
permissions: { type: PerSchema, required: true, default: {} },
});
测试
function setUser() {
var u = new User({
fname: 'asa',
lname: 'dddd'
});
u.save(function(err) {
if (err)
console.log(err);
else
console.log('save user successfully');
});
}
结果是
{ "_id" : ObjectId("56c687427191d54021875fb1"),
"fname" : "asa",
"lname" : "dddd",
"permissions" : { },
"__v" : 0
}
发布于 2017-09-01 07:52:53
这里的猫鼬保护者,我推荐如下:
var UserSchema = mongoose.Schema({
fname: String,
lname: String,
permissions:
type: UserPermisssionsSchema ,
default: () => ({}),
}
});
这将使permissions
默认为空对象,对于UserPermissionsSchema
可能具有的任何默认值。如果您将default
设置为UserPermisssionsSchema
,如果您的属性之一碰巧与猫鼬模式方法重叠,则可能会出现一些不好的行为。
发布于 2020-10-09 01:18:46
单个嵌入子文档默认设置
var UserPermisssionsSchema = new mongoose.Schema({
siteAdmin: {
type: Boolean,
default: false,
}
});
var UserSchema = mongoose.Schema({
fname: String,
lname: String,
permissions:
type: UserPermisssionsSchema,
default: () => ({}),
})
猫鼬多重(数组)嵌入式子文档默认设置
var UserPermisssionsSchema = new mongoose.Schema({
siteAdmin: {
type: Boolean,
default: false,
}
});
var UserSchema = mongoose.Schema({
fname: String,
lname: String,
permissions:
type: [UserPermisssionsSchema],
default: () => ([]),
})
https://stackoverflow.com/questions/35494875
复制相似问题