我正在使用猫鼬。我有一个像这样的课程架构:
var mongoose = require('mongoose');
var lessonSchema = mongoose.Schema({
_id: {type: Number, required:true, unique:true, max: 10},
lessonName: {type: String, required: true, max: 100},
});
var Lesson = mongoose.model('Lesson', lessonSchema);
module.exports = Lesson;
我正在从页面发送一个JSON数组,如:
var lessonArray=[];
for (i=0;i < dersler.length;i++) {
lessonArray.push("{_id: " + i + ", lessonName: " + dersler[i] + "}");
}
console.log("lessonArray: " + lessonArray + "-" + lessonArray.length)
return lessonArray;
$.ajax({
url: "http://localhost:3000/addlesson",
type: 'POST',
data: JSON.stringify(lessons),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
console.log("Başarılı Ajax Çağrısı")
},
error: function (errormessage) {
console.log("Başarısız Ajax Çağrısı:")
}
}).then(function(data) {
console.log('DB insert gelen cevap:' + data);
});
在节点服务器上,我处理POST,如:
app.post("/addlesson", (req, res) => {
//var myLessonList = new Lesson(JSON.parse(req.body[1]));
var myLessonList = req.body;
console.log("Lesson1:" + myLessonList[0]);
var myData = Lesson(myLessonList[0]);
console.log("Lesson11:" + myData);
console.log("LessonList:" + myLessonList + '-' + req.body);
Lesson.lessonName = req.body[1];
console.log("LessonName:" + Lesson.lessonName);
/* var myData = new Lesson(req.body);
myData.save()
.then(item => {
res.send("item saved to database");
})
.catch(err => {
res.status(400).send("unable to save to database:" + err);
});
*/
res.send("Başarılı");
});
但是在下面的这一行,它会给出一个类型错误
var myData = Lesson(myLessonList[0]);
我正在尝试将AJAX发布到服务器并获取正文并从中获取json数组,然后将数据保存到mongodb。但不知何故,将数据从数组转换为json,反之亦然。
答案 0 :(得分:0)
我认为这个问题与你实际上并没有发送JSON数组对象而是发送JSON数组的事实有关。我建议将lessonArray循环更改为类似下面的内容来创建数组:
package.json
稍后您在代码中使用的JSON.stringify应该将其设置为有效的json。
另外,根据您是否在后端使用JSON解析中间件,您可能需要在服务器上执行JSON.parse,因为我可以看到您在某些时候。