如何定义Mongoose Schema?

时间:2017-08-17 02:21:39

标签: javascript mongodb mongoose mongoose-schema

我有一个应用程序,它生成以下JSON对象/数组,我想在我的数据库用户下保存。

[ [ { _id: '5990e6d4fce2e705f8d74923',
      fname: 'test',
      lname: 'testerson1',
      username: 'email1@gmail.com',
      __v: 0,
      userid: '5990e6b9fce2e705f8d74922' },
    { _id: '5990e6e6fce2e705f8d74924',
      fname: 'test',
      lname: 'testerson2',
      username: 'email2@gmail.com',
      __v: 0,
      userid: '5990e6b9fce2e705f8d74922' } ],
  [ { _id: '5990e6f7fce2e705f8d74925',
      fname: 'test',
      lname: 'testerson3',
      username: 'email3@gmail.com',
      __v: 0,
      userid: '5990e6b9fce2e705f8d74922' },
    { _id: '5990e707fce2e705f8d74926',
      fname: 'test',
      lname: 'testerson4',
      username: 'email4@gmail.com',
      __v: 0,
      userid: '5990e6b9fce2e705f8d74922' } ] ]

我不确定如何在我的模型中定义这个,我尝试过的是:

var UserSchema = new mongoose.Schema({
    fname: String,
    lname: String,
    username: String,
    password: String,
    testers: [
        [
            {
                type: mongoose.Schema.Types.ObjectId,
                ref: "Tester"
            }
        ]
    ]
});

使用这种方法,我总是得到MongooseError: Cast to ObjectId failed for value "[ { _id: '5990e6d4fce2e705f8d74923'错误消息......我想的是因为我试图保存的数组没有ObjectId。

我也尝试从模式中删除类型和ref并只留下数组,这可行...我的数据JSON对象/数组保存得很好,但是因为我还在学习Mongo / Mongoose,我想知道如何正确定义。

谢谢!

编辑:

router.post("/matchtesters", middleware.isLoggedIn, function(req, res) {
    User.findById(req.user._id, function(err, user){
        if (err) {
            console.log(err);
        } else {
            Tester.find({ "userid": req.user._id }, function(err, beans) {
                if (err) {
                    console.log(err);
                } else {           
                    console.log("TEST2: ", req.body);
                    console.log("TEST3: " + JSON.stringify(req.body));
                    user.testers.push(req.body);
                    user.save();
                }
            });
        }
    });
});

0 个答案:

没有答案