我创建了一个如下所示的Mongoose Schema:
var UserSchema = new Schema({
user: [{
name: {
type: String,
required: true
},
email: {
type: String,
required: true,
index: { unique: true }
},
password: {
type: String,
required: true
},
mobile: Number
}],
account: [{
locked: {
type: Boolean,
default: false
},
accountType: {
type: String,
default: "guest"
},
failedLogins: {
type: Number,
default: 0
}
}],
reset: [{
resetToken: String,
resetExpirey: Date
}],
details: [{
accountCreated: Date,
lastLogin: Date
}]
});
正如您所看到的,我试图对某些字段进行分组。这是正确的方法吗?我现在无法参考这些字段。我尝试这个时出错:
User.create({
user.name : req.body.name,
user.email : req.body.email,
user.password: req.body.password
}, function(err) {
if (err) res.send(err);
});
错误为unexpected token '.' in user.name
答案 0 :(得分:2)
你的create语句仍然需要正确的javascript,所以你的左侧对象文字需要是字符串。
User.create({
'user.name' : req.body.name,
'user.email' : req.body.email,
'user.password': req.body.password
}, function(err) {
if (err) res.send(err);
});
此外,因为Mongoose要求您拥有一个数组而不是允许正确的子对象,所以您需要将它们实际插入为数组。
var user = {user: [{name:req.body.name, email: req.body.email, password: req.body.password}]};
User.create(user) ...
至于“这样做是否值得”,我的意见是:不。只需将所有这些内容放在根对象中,除非您计划在这一个文档中拥有多个用户或多个帐户。