Ich versuche, ein externes Schema mit Mongoose in Node zu verwenden, erhalte jedoch weiterhin den folgenden Fehler:
ReferenceError: ContactSchema ist nicht definiert
Mein ContactSchema.js sieht so aus:
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var ContactSchema = new Schema({
name: String,
address: String
});
module.exports = mongoose.model("ContactSchema", ContactSchema);
Meine routes.js-Datei sieht folgendermaßen aus:
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/choredb");
require("../models/ContactSchema.js");
var routes = function(app) {
app.post("/createnew", function(req, res) {
console.log(req.body);
var contact = new ContactSchema();
contact.name = req.body.name;
contact.note = req.body.note;
contact.save(function(err){
if (err) {throw err;}
console.log("saved");
mongoose.disconnect();
});
});
}
module.exports = routes;
Ich bin mir ziemlich sicher, dass es nicht so weit ist, aber ich kann nicht herausfinden, warum es das Schema nicht findet.
Antworten:
3 für die Antwort № 1Wenn Sie etwas in "example_module" exportieren, gibt require ("example_module") etwas zurück. Der von Ihnen geschriebene Code gibt Content Model zurück, obwohl Sie ihn nicht als Variable deklariert haben.
Mein Code ist
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var ContactSchema = new Schema({
name: String,
address: String
});
var Content = mongoose.model("Content", ContentScehma);
module.exports = Content;
und am router oder so
app.post("/content", function(req, res, next){
var Content = require("../models/ContactSchema.js");
var ContentSchema = ContentModel.schema;
var aContent = new Content({name: "MyName", address: "MyAddress"});
aContent.save(function(err, savedContent){
if(err) return next(err);
return res.send(savedContent);
});
});
1 für die Antwort № 2
Zuerst müssen Sie Ihre ContactSchema.js-Datei in Ihre routes.js mit der folgenden Sprache einfügen:
var db = require("../models/ContactSchema.js");
und dann kannst du dein Schema in route.js so definieren:
var contact = new db.contactModel();
Ich hoffe das hat dir geholfen
Bearbeiten: Sie müssen Ihr Schema auch aus ContactSchema.js mit den folgenden Angaben exportieren, wenn Sie den obigen Code verwenden
var contactModel = mongoose.model("ContactSchema", ContactSchema);
exports.contactModel = contactModel;
Wenn Sie ein sehr gutes Beispiel für die Verwendung von Mungo mit Knoten suchen, schauen Sie sich das folgende Git-Projekt an: https://github.com/kdelemme/blogjs