2017-10-16 21 views
0

我使用的貓鼬。我有一個課程模式是這樣的:類型錯誤:無法使用 '的' 運營商 「{_id:0,lessonName:Matematik}」 搜索 '_id'

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); 
       }); 

在節點服務器I處理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

我相信這個問題我的事實,你是不是實際發送對象的JSON數組,但蜇的JSON陣列有關。我會建議改變lessonArray循環,像下面創建數組:

var lessonArray=[]; for (i=0;i < dersler.length;i++) { lessonArray.push({_id: i, lessonName: dersler[i]}); }

而JSON.stringify你在代碼後應處理製作成是有效的JSON。

還取決於您是否使用在後端一個JSON解析中間件或沒有,你可能需要在服務器上做JSON.parse,我可以看到你不得不在某些時候。

相關問題