Javascript 快速路由器不';不能识别猫鼬模型

Javascript 快速路由器不';不能识别猫鼬模型,javascript,node.js,express,mongoose,routing,Javascript,Node.js,Express,Mongoose,Routing,我正在开发一个node.js应用程序,每次我运行这段代码时,它都会弹出一个引用错误,表示未定义Post。当我将post路由放在app.js而不是submit.js中时,它运行良好。这让我相信这是因为submit.js没有“看到”app.js中定义的模型。我对网络开发非常陌生,所以这可能是我缺少的一些非常基本的东西 app.js var express = require('express'); var mongoose = require('mongoose'); var submitRout

我正在开发一个node.js应用程序,每次我运行这段代码时,它都会弹出一个引用错误,表示未定义Post。当我将post路由放在app.js而不是submit.js中时,它运行良好。这让我相信这是因为submit.js没有“看到”app.js中定义的模型。我对网络开发非常陌生,所以这可能是我缺少的一些非常基本的东西

app.js

var express = require('express');
var mongoose = require('mongoose');

var submitRouter = require('./routes/submit');
var app = express();

mongoose.Promise = global.Promise;
mongoose.connect("mongodb://localhost:27017/posts");

//Mongoose Schema
var postSchema = new mongoose.Schema({
  username: String,
  date: Date,
  title: String,
  link: String,
  text: String,
  votes: Number,
  community: String
});
var Post = mongoose.model("Post", postSchema);

app.use('/submit', submitRouter);

module.exports = app;
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');

router.post('/', function(req, res, next){
    var newPost = new Post(req.body);
    newPost.save()
      .then(item => {
      res.json(newPost);
      })
      .catch(err => {
        res.status(400).send("unable to save to database");
      });
});

module.exports = router;
submit.js

var express = require('express');
var mongoose = require('mongoose');

var submitRouter = require('./routes/submit');
var app = express();

mongoose.Promise = global.Promise;
mongoose.connect("mongodb://localhost:27017/posts");

//Mongoose Schema
var postSchema = new mongoose.Schema({
  username: String,
  date: Date,
  title: String,
  link: String,
  text: String,
  votes: Number,
  community: String
});
var Post = mongoose.model("Post", postSchema);

app.use('/submit', submitRouter);

module.exports = app;
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');

router.post('/', function(req, res, next){
    var newPost = new Post(req.body);
    newPost.save()
      .then(item => {
      res.json(newPost);
      })
      .catch(err => {
        res.status(400).send("unable to save to database");
      });
});

module.exports = router;

Post没有定义,这是因为您没有像在App.js中那样在submit.js中定义mongoose模式

您正在创建一个实例,以使用new Post发布,但submit.js中不存在该发布

  var express = require('express');
  var router = express.Router();
  var mongoose = require('mongoose');
  var Post = require('./schema/PostSchema.js');
  router.post('/', function(req, res, next){
      var newPost = new Post(req.body);
      newPost.save()
           .then(item => {
               res.json(newPost);
       })
       .catch(err => {
          res.status(400).send("unable to save to database");
       });
 });

 module.exports = router;
我建议您将模式放在单独的文件中,并将其导入submit.js

  var express = require('express');
  var router = express.Router();
  var mongoose = require('mongoose');
  var Post = require('./schema/PostSchema.js');
  router.post('/', function(req, res, next){
      var newPost = new Post(req.body);
      newPost.save()
           .then(item => {
               res.json(newPost);
       })
       .catch(err => {
          res.status(400).send("unable to save to database");
       });
 });

 module.exports = router;
创建一个名为schema的文件夹,并在此文件夹中创建一个名为PostSchema.js的文件名

   var mongoose = require('mongoose');
   //Mongoose Schema
   var postSchema = new mongoose.Schema({
       username: String,
       date: Date,
       title: String,
       link: String,
       text: String,
       votes: Number,
       community: String
   });
   var Post = mongoose.model("Post", postSchema);
   module.exports = Post;
PostSchema.js

   var mongoose = require('mongoose');
   //Mongoose Schema
   var postSchema = new mongoose.Schema({
       username: String,
       date: Date,
       title: String,
       link: String,
       text: String,
       votes: Number,
       community: String
   });
   var Post = mongoose.model("Post", postSchema);
   module.exports = Post;
在submit.js中导入post架构

  var express = require('express');
  var router = express.Router();
  var mongoose = require('mongoose');
  var Post = require('./schema/PostSchema.js');
  router.post('/', function(req, res, next){
      var newPost = new Post(req.body);
      newPost.save()
           .then(item => {
               res.json(newPost);
       })
       .catch(err => {
          res.status(400).send("unable to save to database");
       });
 });

 module.exports = router;

顺便说一句,这不是Express Router的问题。

@PatrickBender欢迎您。请投票并接受答案,以便对未来的读者有所帮助