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ď č. 1Ak 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