2017-10-16 1 views
0

Ich benutze Mungo. Ich habe eine Lektion Schema wie folgt aus:TypeError: Kann 'in' Operator nicht verwenden, um nach '_id' in "{_id: 0, lectionName: Matematik} zu suchen"

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; 

Ich bin ein Array von JSON von der Seite, wie das Senden:

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

auf dem Knoten Server ich mit den POST wie:

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

aber darunter an dieser Linie gibt einen Typ Fehler

var myData = Lesson(myLessonList[0]); 

Ich versuche, AJAX Post zum Server zu machen und den Körper zu erhalten und json-Array von ihm zu erhalten und dann die Daten zu mongodb zu speichern. Aber irgendwie sieht es so aus, als ob es einen Fehler beim Konvertieren von Daten von Array nach Json oder umgekehrt gibt.

Antwort

0

Ich glaube, das Problem hängt damit zusammen, dass Sie tatsächlich kein JSON-Array von Objekten senden, sondern ein JSON-Array von Stings. Ich würde vorschlagen, die lessonArray Schleife zu so etwas wie die unten ändert das Array zu erstellen:

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

Und die JSON.stringify Sie später im Code sollte machen, dass in gültige Json behandeln.

Auch abhängig davon, ob Sie eine JSON-Parsing-Middleware im Backend verwenden oder nicht, müssen Sie möglicherweise eine JSON.parse auf dem Server tun, wie ich sehen konnte, dass Sie irgendwann hatten.

Verwandte Themen