我试图发布一些东西,但总是出错。
articlesRouter.post('articles/:target', async (req, res) => {
const target = req.params.target.replaceAll("_", " ")
const article = await Article.findOne({where: {title: target}})
if (article)
{
const author = req.body.commentAuthor
const text = req.body.commentText
await article.createComment({author, text})
console.log("POST METHOD IS WORKING")
}
})
形式:
<form method="post">
<textarea placeholder="Title of your article" id="title" name="articleTitle"></textarea>
<br />
<textarea placeholder="Body of your article" id="body" type="text" name="articleBody"></textarea>
<br />
<button id="submit" type="submit">Done</button>
</form>
获取方法
articlesRouter.get('/articles/:target', async (req, res) => {
const target = req.params.target.replaceAll("_", " ")
const searchResult = await Article.findOne({where: {title: target}})
if (searchResult)
{
const correspondingComments = await searchResult.getComments()
res.render('../views/currentArticle', {title: searchResult.title, text: searchResult.body, comments: correspondingComments})
}
else{
console.log('Error')
}
})
您可以看到,文章的路径由
/articles
和 /title_of_article
组成。我认为这个问题在这一行articlesRouter.post('articles/:target'.....
可能我不能使用带有 /:params 的 post 方法??? 感谢您的阅读!
要解决此问题,您需要确保表单字段的名称与您在服务器端代码中访问的键匹配。以下是更新表单以匹配预期键的方法:
<form method="post">
<textarea placeholder="Title of your article" id="title" name="commentAuthor"></textarea>
<br />
<textarea placeholder="Body of your article" id="body" type="text" name="commentText"></textarea>
<br />
<button id="submit" type="submit">Done</button>
</form>
形式:
<!DOCTYPE html>
<html>
<head>
<title>Form</title>
</head>
<body>
<form method="post" action="/test/articles">
<textarea placeholder="Title of your article" id="title" name="articleTitle"></textarea>
<br />
<textarea placeholder="Body of your article" id="body" type="text" name="articleBody"></textarea>
<br />
<button id="submit" type="submit">Done</button>
</form>
</body>
</html>
app.js:
...
const testRouter = require('./routes/test');
...
app.use('/test', testRouter);
...
测试.js:
const express = require('express');
const articlesRouter = express.Router();
articlesRouter.post('/articles', (req, res) => {
const target = req.body.articleTitle.replaceAll("_", " ")
console.debug(target)
// ... your DB access code
res.send('ok')
})
module.exports = articlesRouter;