Javascript Mongo:保存对象数组
我试图在一次保存中将一组对象保存到我的mongo db中。我想先将每个新对象存储到一个临时数组中,然后通过ajax post请求将其发送到server.js。但每次它到达服务器时,数据就变成一个巨大的对象,而不是一个对象数组。我想用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,
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); }
查看此内容以获得更深入的帮助