2017-05-09 5 views
0

Ich habe ein Mungo-Modell für Professoren, das so aussieht.Ein Dokument kann nicht in einer Sammlung gespeichert werden - Mungo

var mongoose = require('mongoose'); 
var uuidV4 = require('uuid/v4'); 
var Professors = mongoose.model('Professors', { 
    _id:{ 
     type: String, 
     defualt: uuidV4() 
    }, 
    professorfirstName: { 
     type: String, 
    }, 
    professroLastName: { 
     type: String, 
    }, 
    reviews: [ 
     { 
      review: { 
       type: String 
      }, 
      reviewer: { 
       type: String 
      }, 
      rating: { 
       type: Number 
      } 
     } 
    ], 
    ratings: { 
     type: Number 
    } 
}); 

module.exports = { 
    Professors: Professors 
} 

Meine Routen für die Professoren-Datei lautet wie folgt:

var {Professors} = require('./../server/models/professors'); 
var {mongoose} = require("./../server/db/mongoose"); 
var router = require('express').Router(); 

router.get('/getAllProfessors', (req, res) => { 
    Professors.find().then((data) => { 
     res.send({data}); 
    }, (err) => { 
     res.status(400).send(err); 
    }); 
}); 

router.post('/add', (req, res) => { 
    var professor = new Professors({ 
     professorfirstName: "test", 
     professorlastName: "test", 
     reviews: [], 
     ratings: 5 
    }); 

    professor.save().then((data) => { 
     res.send({data}); 
    }, (err) => { 
     console.log("Didn't save!!"); 
     res.status(400).send(err); 
    }); 
}); 

module.exports = router; 

Für den obigen Code funktioniert Meine Route planen in Ordnung. Ich bin in der Lage, alle Professoren in der Datenbank zu extrahieren. Aber meine 'Hinzufügen'-Route funktioniert nicht. Ich kann den Datensatz nicht in der Sammlung speichern. Ich erhalte Status 400 und ich bekomme nur einen leeren Rekord im Postboten wie dieses '{}'. Was mache ich falsch daran?

+0

Versuchen Sie Logging 'err ':' console.log ("nicht gespeichert !!', err)'. Übrigens enthält Ihr Schema einige Tippfehler ('defualt',' professroLastName') – robertklep

+0

@robertklep Ich bin Dieser Fehler wird angezeigt "Fehler: Dokument muss eine _id vor dem Speichern haben" – kiiiiNNNNNNNNNyyyy

+0

@robertklep Das Programm funktioniert, wenn ich _id in der Route hinzufügen, aber meine Frage sollte nicht automatisch diese ID bereitstellen, da ich es als Standard hinzugefügt habe ? – kiiiiNNNNNNNNNyyyy

Antwort

1

Es gibt ein paar Probleme mit dem Schema:

_id:{ 
    type: String, 
    defualt: uuidV4() 
}, 

defualt ist falsch geschrieben, und auch, sollte es eine Funktion verweisen; In Ihrem Fall führen Sie die Funktion sofort aus und daher bezieht sich die Referenz auf eine einzelne Zeichenfolge, was nicht richtig ist.

Dies sollte besser funktionieren:

_id : { 
    type : String, 
    default : uuidV4 
} 

Es gibt auch eine andere Fehler im Schema: professroLastNameprofessorLastName sein sollte.

Verwandte Themen