无法使用mongoose模式更新模型

zy1mlcev  于 2023-08-06  发布在  Go
关注(0)|答案(1)|浏览(97)

我试图创建一个更新功能,但它并没有更新模型:(首先,我发出一个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.点击保存按钮后,它只是重定向我,但结果是不编辑。

tzcvj98z

tzcvj98z1#

似乎在这段代码中没有任何地方你试图更新模型?您正在尝试更新模型的示例,即文档。
将POST更改为PUT确实没有帮助,因为您没有PUT路由。一个GET/POST于是,他就选择了404。
您的POST可能无法工作的原因是findOneAndUpdate的参数顺序错误。标签:https://mongoosejs.com/docs/tutorials/findoneandupdate.html
基本上你需要做

return Warum.findOneAndUpdate(req.params.id, {
        title: req.body.title,
        description: req.body.description,
    }, { new: true })

字符串
所以{ new:true }需要tb

相关问题