我正在尝试在Node中使用Mongoose的外部架构,但不断收到此错误:
ReferenceError:未定义ContactSchema
我的ContactSchema.js如下所示:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ContactSchema = new Schema({
name: String,
address: String
});
module.exports = mongoose.model('ContactSchema', ContactSchema);
我的routes.js文件如下所示:
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;
我很确定它不是那么遥远,但无法弄清楚为什么它找不到架构。
答案 0 :(得分:3)
如果要在“example_module”中导出某些内容,则require(“example_module”)将返回一些内容。您编写的代码返回内容模型,但您没有声明为变量。
我的代码方式是
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;
和路由器或其他东西
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 :(得分:1)
首先,您必须在routes.js中包含ContactSchema.js文件,其中包含以下内容:
var db = require('../models/ContactSchema.js');
然后您可以在route.js中定义您的Schema,如下所示:
var contact = new db.contactModel();
我希望这对你有所帮助
编辑: 如果使用上面的代码
,还必须使用以下内容从ContactSchema.js导出架构var contactModel = mongoose.model('ContactSchema', ContactSchema);
exports.contactModel = contactModel;
如果你搜索一个关于如何在节点中使用mongoose的非常好的例子,请查看以下git项目:https://github.com/kdelemme/blogjs