TypeError:无法使用'in'运算符在“{_id:0,lessonName:Matematik}”中搜索“_id”

时间:2017-10-16 07:51:03

标签: json ajax

我正在使用猫鼬。我有一个像这样的课程架构:

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,反之亦然。

1 个答案:

答案 0 :(得分:0)

我认为这个问题与你实际上并没有发送JSON数组对象而是发送JSON数组的事实有关。我建议将lessonArray循环更改为类似下面的内容来创建数组:

package.json

稍后您在代码中使用的JSON.stringify应该将其设置为有效的json。

另外,根据您是否在后端使用JSON解析中间件,您可能需要在服务器上执行JSON.parse,因为我可以看到您在某些时候。