ReferenceError:未定义架构

时间:2015-06-24 09:00:19

标签: javascript node.js mongodb mongoose

我正在尝试在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;

我很确定它不是那么遥远,但无法弄清楚为什么它找不到架构。

2 个答案:

答案 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