Javascript Mongo:保存对象数组

Javascript Mongo:保存对象数组,javascript,jquery,ajax,mongodb,mongoose,Javascript,Jquery,Ajax,Mongodb,Mongoose,我试图在一次保存中将一组对象保存到我的mongo db中。我想先将每个新对象存储到一个临时数组中,然后通过ajax post请求将其发送到server.js。但每次它到达服务器时,数据就变成一个巨大的对象,而不是一个对象数组。我想用Mongo做的事可能吗,还是我遗漏了什么?下面是我的代码 模式 var capsuleSchema = new mongoose.Schema({ qa: [{ type: mongoose.Schema.Types.ObjectId,

我试图在一次保存中将一组对象保存到我的mongo db中。我想先将每个新对象存储到一个临时数组中,然后通过ajax post请求将其发送到server.js。但每次它到达服务器时,数据就变成一个巨大的对象,而不是一个对象数组。我想用Mongo做的事可能吗,还是我遗漏了什么?下面是我的代码

模式

    var capsuleSchema = new mongoose.Schema({
    qa: [{
        type: mongoose.Schema.Types.ObjectId, ref: 'Question',
        question: String,
        answer: String
    }],
    user: { type: mongoose.Schema.Types.ObjectId, ref: 'User'},
    date_of_return: Date,
    created_at: { type: Date, default: Date.now }
});

    var Capsule = mongoose.model('Capsule', capsuleSchema);
    module.exports = Capsule;
APP.JS

    var temp_id = id;
    var temp_q = quest;
    var temp_ans = $('#response').val();

    var tempQA = {
      id: temp_id,
      question: temp_q,
      answer: temp_ans
    };

    saveQuestion(tempQA);

    var saveQuestion = function(tempQA) {
      answeredQuestions.push(tempQA);
    }
    var capsuleData = {
        questions: answeredQuestions
    }

    newCapsule(capsuleData);

    var newCapsule = function(capsuleData) {
        $.ajax({
            url: "http://localhost:3000/capsules",
            method: "POST",
        dataType: 'json',
            data: capsuleData
        }).done(function(data){
        // returns "capsule creation complete"
        });
    }; // end newCapsule
SERVER.JS

app.post('/capsules', function(req, res) {
  var qa_array = [];

  var capsule = new Capsule({
    qa: req.body.questions,
    user: req.cookies.loggedinId,
  });

  capsule.qa.push(req.body)

  capsule.save( function(err, capsule) {
    if (err) {
      console.log(err);
      res.statusCode = 503;
    } else {
      res.send(capsule);
    }; // end if/else
  }); // end save
}); // end post time-capsule
更新: 我不小心将新胶囊(capsuleData)放入胶囊对象中。--修复

我认为问题在于ajax请求。当对象数组经过并到达server.js时,它被重新格式化为一个对象数组,该对象数组包含数组innumerated、key:value对作为字符串,甚至在我在服务器端对其进行任何操作之前。(“即:问题[0][id]:“12345”,“问题[0][问题]:“你好吗?”等


但我需要它作为一个对象数组。

如果要保存多个文档,请尝试
db.collection.insert


以下代码在语法上不正确。
capsulateData
不是函数,而是对象文字

var capsuleData = { questions: answeredQuestions newCapsule(capsuleData); }
下面的代码向对象附加了一个方法。您还需要将
Capsule()
作为一个javascript函数包含在内,以便
newcapsule()可以访问
可以创建javascript对象。但这仍然是在创建对象而不是数组。您需要创建数组客户端,然后将其传递给服务器进行处理

var capsuleData = { questions: answeredQuestions,
anObjectMethod : new Capsule(capsuleData); }
查看此内容以获得更深入的帮助