Hej人
我尝试创建一些全栈应用程序(基于一个教程),但在了解支持部分的工作方式时遇到了一些问题。从理论上讲,然后我第一次完成了本教程,一切正常。但是现在,我尝试在此基础上进行一些新的尝试,我发现有几件事我不理解。基本上,为什么它不起作用。
我生成Express应用。我的app.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;
routers / cases.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”,其对象为具有ID,名称,位置,状态的项Cases。没发生我安装了Compass以便最容易地检查我的mongodb,并且可以看到我没有像covid这样的东西。好的,我是手动创建的,但是据我了解,应该在运行nodemon之后自动完成。
2)我希望我可以通过邮递员检查我的后端。 https://localhost:3000/api/(3000-nodemon默认端口),但我
无法获得任何响应连接到时发生错误 https://localhost:3000/api/。
这就是一切。在控制台和邮递员中我都看不到此错误。
也许我对Express应用程序中的端口不了解,或者对mongoDB不了解。但是谷歌没有帮助我。它只会把我的头弄得更大。因此,也许有人可以向我解释它应该如何工作以及为什么?