Экспресс-роутер не распознает модель мангуста

1

Я работаю над приложением node.js, и каждый раз, когда я запускаю этот код, появляется эталонная ошибка, указывающая, что сообщение не определено. Когда я помещаю почтовый маршрут в 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;

submit.js

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;
Теги:
express
mongoose
routing

1 ответ

1
Лучший ответ

Сообщение не определено. Это потому, что у вас нет схемы mongoose, определенной в submit.js, как вы делали в App.js.

Вы создаете экземпляр для публикации с помощью нового сообщения, но сообщение не существует в submit.js

Я бы рекомендовал вам поместить вашу схему в отдельный файл и импортировать ее в submit.js

Создайте папку под названием schema и внутри этой папки создайте имя файла PostSchema.js

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

  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.

  • 1
    Это сработало! Спасибо.
  • 0
    @PatrickBender, пожалуйста. Пожалуйста, сделайте upvote и примите ответ, чтобы он помог будущим читателям

Ещё вопросы

Сообщество Overcoder
Наверх
Меню