将静态复杂对象添加到Mongoose / Passport架构

时间:2015-10-27 18:58:05

标签: node.js mongodb express mongoose passport.js

我在我的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":[]}]

在架构设计或进入架构的数据中,我需要更改为架构?

1 个答案:

答案 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}
});