【发布时间】:2021-02-24 03:20:19
【问题描述】:
(更新)感谢cmets中的许多人,我解决了这个问题,现在我遇到了一个新问题。保存数据后,我似乎无法重定向到主页。我被一个中间 HTML 卡住了,它向我显示了保存的 JSON 语句。
我一直在尝试使用 html 表单将信息发布到 API,但我总是收到错误 Cannot POST /。我已经尝试了很多我在 GitHub 上看到的 YouTube 教程和示例,但我似乎无法让它发挥作用。以下是我一直在使用的代码。有什么我做错或没看到的吗?
这是 server.js(虽然我不认为问题出在此处):
const express = require('express');
const mongoose = require('mongoose');
const app = express();
mongoose.connect(process.env.DATABASE_URL, {useNewUrlParser: true, useUnifiedTopology: true })
const db = mongoose.connection
db.on('error', (error) => console.error(error))
db.once('open', () => console.log('connected to database'))
app.use(express.json())
const jugadorRouter = require('./routes/jugadores')
app.use('/jugadores', jugadorRouter)
const PORT = process.env.PORT || 3000;
server.listen(PORT, () => console.log(`Server running on port ${PORT}`));
这是表单所在的索引:
<form name="form" method="post" action="/">
<div class="form-control">
<label for="username">Usuario</label>
<input type="text" name="username" id="username" placeholder="Ingrese su usuario..." required />
</div>
<div class="form-control">
<label for="room">Equipo</label>
<select name="room" id="room">
<option value="rojo">Equipo rojo</option>
<option value="amarillo">Equipo Amarillo</option>
<option value="blanco">Equipo Blanco</option>
</select>
</div>
<button id="login" type="submit" class="btn" onclick="javascript: form.action='Gerente.html'" formmethod="post">Gerente</button>
</form>
这是 jugadores.js post 方法所在的位置:
const express = require('express')
const router = express.Router()
const Jugador = require('../model/jugador')
router.post('/', async (req, res) => {
console.log(req.body);
const jugador = new Jugador({
username: req.body.username,
room: req.body.room
})
try{
const newJugador = await jugador.save()
res.status(201).json(newJugador)
}catch(err){
res.status(400).json({message: err.message})
}
res.render('public/Gerente', {
username: username,
room: room
});
res.end();
});
module.exports = router
这是我的 jugador.js:
const mongoose = require('mongoose')
//login schema
const jugadorSchema = new mongoose.Schema({
username:{
type: String,
required: true
},
Date:{
type: Date,
required: true,
default: Date.now
}
})
module.exports = mongoose.model('Jugador', jugadorSchema);
【问题讨论】:
-
您在浏览器中打开的网址是什么?
-
我在 localhost:3000 上运行它,所以只要它运行 index.html 就会加载。
-
原来是
http://localhost:3000/? -
是的,没错
标签: javascript node.js forms express post