Привет, люди
Я пытаюсь создать какое-либо приложение с полным стеком (на основе одного урока), и у меня возникли проблемы с пониманием работы вспомогательной части. Теоретически, тогда я сделал этот урок впервые, все работало. Но сейчас, потом я пытаюсь найти что-то новое, я вижу, сколько вещей я не понимаю. По сути, почему это не сработает.
Я создаю express приложение. Мое приложение. js выглядит так:
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var mongoose = require('mongoose');
var cors = require('cors');
mongoose.connect('mongodb://localhost/covid', {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true
}).then(() => console.log('connection successful'))
.catch((err) => console.error(err));
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var casesRouter = require('./routes/cases');
var app = express();
app.use(cors());
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/api', casesRouter);
module.exports = app;
маршрутизаторы / кейсы. js:
var express = require('express');
var router = express.Router();
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var Cases = require('../models/Cases.js');
server.listen(4000)
// socket io
io.on('connection', function (socket) {
socket.on('newdata', function (data) {
io.emit('new-data', { data: data });
});
socket.on('updatedata', function (data) {
io.emit('update-data', { data: data });
});
});
// list data
router.get('/', function(req, res) {
Cases.find(function (err, cases) {
if (err) return next(err);
res.json(cases);
});
})
module.exports = router;
и схема:
var mongoose = require('mongoose');
var CasesSchema = new mongoose.Schema({
id: String,
name: String,
location: String,
state: String,
});
module.exports = mongoose.model('Cases', CasesSchema);
ок, это все.
Итак, теперь я запускаю его с консоли с помощью nodemon. В консоли все выглядит нормально. Нет ошибки, и сообщение, что все в порядке. Но приложение не работает:
1) Я ожидаю, что эта часть:
mongoose.connect('mongodb://localhost/covid', {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true
}).then(() => console.log('connection successful'))
.catch((err) => console.error(err));
должна создать мне новую схему "covid" с объектом Cases с ключами id, name, location, state , Этого не случилось Я установил Compass для простоты осмотра моего mongodb, и я вижу, что у меня нет ничего похожего на covid. Хорошо, я создал это вручную, но, как я понимаю, это должно быть сделано автоматически после запуска nodemon.
2) Я ожидаю, что смогу проверить свой бэкэнд через почтальона. https://localhost: 3000 / api / (3000 - порт по умолчанию для nodemon), но я
Не удалось получить ответ. Произошла ошибка при подключении к https://localhost : 3000 / api / .
и все. Я не вижу этой ошибки ни в консоли, ни в почтальоне.
Возможно, я не понимаю что-то с портами в приложении express, или я не понимаю что-то с mongoDB. Но Google не помог мне. Это только увеличило беспорядок в моей голове. Так что, может быть, кто-то из вас может объяснить мне, как это должно работать и почему?