/ / ReferenceError: Schema nicht definiert - Javascript, node.js, mongodb, mongoose

ReferenceError: Schema ist nicht definiert - Javascript, node.js, Mongodb, Mongoose

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 № 1

Wenn 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