узел express, пн goose не работают вместе - PullRequest
0 голосов
/ 11 марта 2020

Привет, люди

Я пытаюсь создать какое-либо приложение с полным стеком (на основе одного урока), и у меня возникли проблемы с пониманием работы вспомогательной части. Теоретически, тогда я сделал этот урок впервые, все работало. Но сейчас, потом я пытаюсь найти что-то новое, я вижу, сколько вещей я не понимаю. По сути, почему это не сработает.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...