我试图创建一个更新功能,但它并没有更新模型:(首先,我发出一个get请求,从服务器获取数据,并将其填充到表单(handlebars)中)
这是路由器:
router.get('/edit/:id', async (req, res) => {
const warum = await Warum.findById(req.params.id)
res.render('edit', warum);
});
router.post('/edit/:id', (req, res) => {
return Warum.findOneAndUpdate(req.params.id, { new: true }, {
title: req.body.title,
description: req.body.description,
})
.then(() => {
res.redirect('/warum');
})
.catch((err) => {
console.log(err);
});
});
字符串
这就是形式:
<form method="post">
<h2>Beitrag bearbeiten</h2>
<ul class="noBullet">
<li>
<label for="title">Titel:</label>
<input type="text" name="title" value="{{title}}" />
</li>
<li>
<label for="description">Beschreibung:</label>
<textarea class="texterea" name="description">
{{description}}
</textarea>
</li>
<div>
<button class="login-button">save</button>
</div>
</ul>
</form>
型
这就是模式:
const mongoose = require('mongoose')
const WarumSchema = new mongoose.Schema({
title: String,
description: String,
});
const Warum = mongoose.model('Warumschema', WarumSchema);
module.exports = Warum;
型
我试着把路由从post改到put,但结果显示是404.点击保存按钮后,它只是重定向我,但结果是不编辑。
1条答案
按热度按时间tzcvj98z1#
似乎在这段代码中没有任何地方你试图更新模型?您正在尝试更新模型的示例,即文档。
将POST更改为PUT确实没有帮助,因为您没有PUT路由。一个GET/POST于是,他就选择了404。
您的POST可能无法工作的原因是findOneAndUpdate的参数顺序错误。标签:https://mongoosejs.com/docs/tutorials/findoneandupdate.html
基本上你需要做
字符串
所以{ new:true }需要tb