【问题标题】:Mongoose saving array as empty when notMongoose 将数组保存为空
【发布时间】:2017-03-11 17:42:14
【问题描述】:

首先,代码如下:

Mongoose 架构

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 的问题。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案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();
        });
    

    【讨论】:

      猜你喜欢
      • 2021-04-20
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      • 2018-04-17
      • 2019-02-13
      • 1970-01-01
      • 2016-12-26
      相关资源
      最近更新 更多