Mongoose Schema中分组数据的正确结构

我创build了一个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 unexpected token '.' in user.name

你的创build语句仍然需要适当的JavaScript,所以你的左侧对象文字将需要string。

 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) ... 

至于这样做是否值得呢,我的意见是:不。 只要将所有这些东西放在根对象中,除非您计划在这个文档中拥有多个用户或多个帐户。