【发布时间】:2021-05-28 14:38:13
【问题描述】:
我正在使用Node JS和Express JS进行表单提交推送数据到数据库。
这是我的表格
<form action="/pokedex/register/poke_submission" method="POST">
<div>
<label for="name">Pokemon</label>
<input type="text" name="name" id="name" required />
</div>
<div>
<label for="number">Number</label>
<input type="text" name="number" id="number" required />
</div>
<div>
<label for="primaryType">Primary Type</label>
<input
type="text"
name="primaryType"
id="primaryType"
required
/>
</div>
<div>
<label for="secondayType">Secondary Type</label>
<input type="text" name="secondayType" id="secondayType" />
</div>
这是我的 POST API
app.post("/pokedex/register/poke_submission", async function (req, res) {
const poke = new Pokemon({
information: {
name: req.body.name,
dexNumber: req.body.dexNumber,
primaryType: req.body.primaryType,
secondaryType: req.body.secondaryType, // Not required
});
try {
const newPokemon = await poke.save();
res.send(newPokemon);
} catch (err) {
res.send(req.body);
console.log(err);
}
});
我正在使用这两个
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
当我点击提交时,它会将我发送到 /pokedex/register/poke_submission 但出现 405 错误。
【问题讨论】:
-
您使用的是 Express 4.16.1+,因此您不需要 body-parser,如下面的答案所述。 405错误是不允许的方法,你可以在浏览器的网络选项卡中仔细检查路径是否与Postman中的相同?
-
@SilviuBurcea 是的,实际上这是我一直在搞砸的主要事情。到目前为止,我了解到我的 Live Server 搞砸了端点。我设法提交了数据,它向我展示了我在 JSON 中添加的信息。唯一的问题是它仍然没有与我的 API 交互,所以没有任何东西被推送到数据库中。
-
@SilviuBurcea 我尝试返回 Postman 以确保 API 仍然有效。数据顺利通过并发布在我的数据库中。
-
浏览器网络显示调用了相同的 API 端点?
-
是的。我决定暂时以“action”的形式使用整个 localhost url。它可以作为临时修复。感谢您的帮助。
标签: javascript node.js mongodb api express