/ / ReferenceError: Schéma nie je definovaná - javascript, node.js, mongodb, mongoose

ReportError: Schéma nie je definovaná - javascript, node.js, mongodb, mongoose

Snažím sa používať externú schému s Mongoose v uzle, ale stále sa mi zobrazuje táto chyba:

ReferenceError: ContactSchema nie je definovaný

My ContactSchema.js vyzerá takto:

var mongoose = require("mongoose");

var Schema = mongoose.Schema;

var ContactSchema = new Schema({
name: String,
address: String
});

module.exports = mongoose.model("ContactSchema", ContactSchema);

Môj súbor maps.js vyzerá takto:

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;

Som si celkom istý, že to nie je až tak ďaleko, ale dokážem zistiť, prečo to nenájde.

odpovede:

3 pre odpoveď č. 1

Ak exportujete niečo na „example_module“, vyžaduje („example_module“) niečo vráti. Kód, ktorý ste napísali, vracia obsahový model, hoci ste ho neurčili ako premennú.

Môj spôsob kódovania je

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;

a na router alebo tak niečo

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 pre odpoveď č. 2

Najprv musíte do súboru route.js zahrnúť súbor ContactSchema.js s nasledujúcim jazykom:

var db = require("../models/ContactSchema.js");

a potom môžete definovať svoje Schema v route.js takto:

var contact = new db.contactModel();

Dúfam, že vám to pomohlo

edit: Ak použijete kód zhora, musíte tiež exportovať svoju schému z ContactSchema.js s nasledujúcim textom

var contactModel = mongoose.model("ContactSchema", ContactSchema);
exports.contactModel = contactModel;

Ak hľadáte veľmi dobrý príklad toho, ako používať mongoose s uzlom, pozrite sa na nasledujúci projekt git: https://github.com/kdelemme/blogjs