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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Сообщение не определено. Это потому, что в 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 это не проблема.
@PatrickBender пожалуйста. Пожалуйста, проголосуйте за и примите ответ, чтобы он помог будущим читателям