我在我的Web应用程序中使用Mongoose和Passport将新用户添加到我的MongoDB数据库中。我使用Google oauth进行注册/登录。在我的用户架构中,我为google方法定义了以下内容:
//user.js
var userSchema = mongoose.Schema({
google : {
id : String,
token : String,
access_token : String,
email : String,
name : String,
picture : String,
nameInfo : Object,
}
});
我使用以下方法创建用户:
//passport.js
var newUser = new User();
//newUser.google.token = token;
newUser.google.name = profile.displayName;
newUser.google.nameInfo = profile._json.name
newUser.google.email = profile.emails[0].value;
newUser.google.id = profile.id;
newUser.google.picture = profile._json.image.url + '0';
newUser.google.access_token = token;
您可以看到所有这些数据都位于我用户文档顶层的“google”数组下。我如何添加一个新的,复杂的静态数组?例如,我希望以下列格式在文档的顶层创建一个新数组:
newUser.dogs = ["cats":[]}]
我需要这种特殊格式,这取决于用户应该如何查看我的网页代码。我最终会将数据添加到“cats”数组中,但它需要从空开始。当我尝试这个的变种时,我只能得到顶级数组 - 例如:我的文档看起来像:
objectid: 1000,
google: [...],
dogs: []
当我需要它时:
objectid: 1000,
google: [...],
dogs: [{"cats":[]}]
在架构设计或进入架构的数据中,我需要更改为架构?
答案 0 :(得分:0)
您想要设置内部嵌入式文档。
这是样本,您可以像这样创建它。
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var Trigger = new Schema({
type : {type: String},
value: {type: Number}
});
var Field = new Schema({
label : {type: String},
type: {type: String},
triggers: [Trigger]
});
var Form = new Schema({
fields : [Field],
user_id : {type: String}
});