我正在尝试在一次保存中将一组对象保存到我的mongo db中。我想先将每个新对象存储到一个临时数组中,然后通过ajax post请求将其发送到server.js。但每次它到达服务器时,数据只变成一个巨大的对象,而不是一个对象数组。我正在尝试用Mongo做什么,或者我错过了什么?这是我下面的代码。
SCHEMA
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
更新 我不小心将newCapsule(capsuleData)放在了胶囊对象中.--已修复。
我认为问题出在ajax请求中。当对象数组通过并到达server.js时,它甚至在我在服务器端对它做任何事情之前,都会重新格式化为一个包含数组无名,key:value对的对象和数组。 (“即:'问题[0] [id]':'12345','问题[0] [问题]':'你好吗?'”等等。
我需要它作为一个对象数组保留。
答案 0 :(得分:0)
如果您想保存多个文档,请尝试db.collection.insert
答案 1 :(得分:0)
以下代码在语法上不正确。 capsuleData
不是一个对象文字的函数。
var capsuleData = { questions: answeredQuestions newCapsule(capsuleData); }
以下代码将方法附加到对象。您还需要将Capsule()
包含为可访问的javascript函数,以便new Capsule()
可以创建javascript对象。但这仍然是创建一个对象而不是一个数组。您需要创建阵列客户端,然后将其传递给要处理的服务器。
var capsuleData = { questions: answeredQuestions,
anObjectMethod : new Capsule(capsuleData); }
请查看此内容以获得更深入的帮助https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript