Javascript ReferenceError:未定义架构

Javascript ReferenceError:未定义架构,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在尝试在节点中使用外部模式和Mongoose,但不断出现以下错误: ReferenceError:未定义ContactSchema 我的ContactSchema.js如下所示: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var ContactSchema = new Schema({ name: String, address: String }); module.exports = m

我正在尝试在节点中使用外部模式和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);
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;
var contact = new db.contactModel();
我的routes.js文件如下所示:

var mongoose = require('mongoose');

var Schema = mongoose.Schema;

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

module.exports = mongoose.model('ContactSchema', ContactSchema);
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;
var contact = new db.contactModel();

我很确定它离我们不远,但我不明白它为什么找不到模式。

首先,您必须在routes.js中包含ContactSchema.js文件,并使用以下命令:

var db = require('../models/ContactSchema.js');
然后,您可以在route.js中定义模式,如下所示:

var mongoose = require('mongoose');

var Schema = mongoose.Schema;

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

module.exports = mongoose.model('ContactSchema', ContactSchema);
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;
var contact = new db.contactModel();
我希望这对你有帮助

编辑: 如果使用上面的代码,还必须从ContactSchema.js导出模式,并包含以下内容

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

如果您搜索一个关于如何将mongoose与node一起使用的非常好的示例,请查看以下git项目:

首先,您必须在routes.js中包含ContactSchema.js文件,并使用以下命令:

var db = require('../models/ContactSchema.js');
然后,您可以在route.js中定义模式,如下所示:

var mongoose = require('mongoose');

var Schema = mongoose.Schema;

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

module.exports = mongoose.model('ContactSchema', ContactSchema);
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;
var contact = new db.contactModel();
我希望这对你有帮助

编辑: 如果使用上面的代码,还必须从ContactSchema.js导出模式,并包含以下内容

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

如果您搜索一个关于如何将mongoose与node一起使用的非常好的示例,请查看以下git项目:

如果您在“example\u模块”中导出某些内容,require(“example\u模块”)将返回某些内容。您编写的代码返回内容模型,尽管您没有声明为变量

我的编码方式是

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);
   });
});

如果您在“示例模块”中导出某些内容,require(“示例模块”)将返回某些内容。您编写的代码返回内容模型,尽管您没有声明为变量

我的编码方式是

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);
   });
});

尝试将模型名称更改为
module.exports=mongoose.model('Contact',ContactSchema)然后将其实例化为
var contact=new contact()?尝试将模型名称更改为
module.exports=mongoose.model('Contact',ContactSchema)然后将其实例化为
var contact=new contact()