当没有时,Mongoose将数组保存为空

时间:2016-10-28 19:06:21

标签: node.js mongodb mongoose

首先,这是代码:

Mongoose Schema

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;

// Registration Form schema
var RegistrationFormSchema = new Schema;

RegistrationFormSchema.add({
  studentFirst: { type: String, required: true },
  studentLast: { type: String, required: true },
  studentGrade: { type: String, required: true },
  guardianFirst: { type: String, required: true },
  guardianLast: { type: String },
  guardianEmail: { type: String },
  courseString: { type: String },
  courseArray: { type: Array }
});

module.exports = mongoose.model('RegistrationForm', RegistrationFormSchema);

相关API路线

  apiRouter.route('/registerNow')
    .post(function(req, res) {

      var newForm = new RegistrationForm();
      console.log(req.body);
      newForm.studentFirst = req.body.studentFirst;
      newForm.studentLast = req.body.studentLast;
      newForm.studentGrade = req.body.studentGrade;
      newForm.guardianFirst = req.body.guardianFirst;
      newForm.guardianLast = req.body.guardianLast;
      newForm.guardianEmail = req.body.guardianEmail;
      newForm.courseString = req.body.courseString;

      newForm.save();
  }

这是我的控制器内部,我正在提出请求。同时在Postman中提出相同的响应请求,因此不确定它是否与我的请求有关,但是想要包含这个请求以获得更多的答案信息。

$http.post('/api/registerNow', {
  'studentFirst': vm.courseInfo.studentFirst,
  'studentLast': vm.courseInfo.studentLast,
  'studentGrade': vm.courseInfo.studentGrade,
  'guardianFirst': vm.courseInfo.guardianFirst,
  'guardianLast': vm.courseInfo.guardianLast,
  'guardianEmail': vm.courseInfo.guardianEmail,
  'courseString': vm.courseInfo.courseString,
  'courseArray': ['asdasd', 'fasfasf', 'gasgasga']
});

现在我们有相关的代码,问题!

当我将HTTP Post请求保存到我的数据库时,它全部保存,但它将courseArray保存为空数组'[]',无论它是什么,如果它是空的还是满的。

我认为这是一个Mongoose Schema问题。

1 个答案:

答案 0 :(得分:1)

在您的路线中,您没有使用请求中的数据设置newForm.courseArray属性。 Mongoose可能将默认值设置为空数组。

尝试使用以下代码

apiRouter.route('/registerNow')
    .post(function(req, res) {

        var newForm = new RegistrationForm();
        console.log(req.body);
        newForm.studentFirst = req.body.studentFirst;
        newForm.studentLast = req.body.studentLast;
        newForm.studentGrade = req.body.studentGrade;
        newForm.guardianFirst = req.body.guardianFirst;
        newForm.guardianLast = req.body.guardianLast;
        newForm.guardianEmail = req.body.guardianEmail;
        newForm.courseString = req.body.courseString;
        newForm.courseArray = req.body.courseArray; //This line is missing

        newForm.save();
    });