Javascript 将回调代码改进为异步等待mongoose

Javascript 将回调代码改进为异步等待mongoose,javascript,asynchronous,mongoose,async-await,callback,Javascript,Asynchronous,Mongoose,Async Await,Callback,我想用async/await方法改进mongose中的旧回调代码(这些方法更易于阅读和组织) 问题出在哪里 我有一个findById,它们是正确的 问题是当尝试使用wait user.save(userWithNewProps) 我试着学习很多教程和其他问题,但对我来说有些困难。 你能检查一下我的错误吗 回叫地狱 这是最初的回调代码,工作正常,但回调是地狱和恶魔精神: // put app.put( '/:id', (req, res) => { User.

我想用async/await方法改进mongose中的旧回调代码(这些方法更易于阅读和组织)

问题出在哪里

我有一个findById,它们是正确的 问题是当尝试使用
wait user.save(userWithNewProps)

我试着学习很多教程和其他问题,但对我来说有些困难。 你能检查一下我的错误吗

回叫地狱

这是最初的回调代码,工作正常,但回调是地狱和恶魔精神:

// put
app.put(
    '/:id',
    (req, res) => {
        User.findById(req.params.id, (err, userFound) => {
            if (err) {
                return res.status(500).json(err);
            }
            if (!userFound) {
                return res.status(404).json(err);
            }
            userFound.name = 'Homer';
            userFound.lastname = 'Simpson';
            userFound.save((err, userUpdated) => {
                if (err) {
                    return res.status(500).json(err);
                }
                res.status(200).json(userUpdated);
            });
        });
    });

非常感谢

从我们在评论中的讨论中我了解到,问题在于更新,而不是在保存数据时,因此您需要通知Mongoose的更改跟踪

可以使用markModified()处理将更改通知Mongoose的操作,并且应该在保存之前完成

user.name = 'Homer'; 
user.lastname = 'Simpson'; 
user.markModified('name'); 
user.markModified('lastname'); 
await user.save();

问候:)

什么不起作用?保存或更新?检查“,”betwen参数in const userWithNewProps={name:'Homer':lastame:'Simpson'}=>const userWithNewProps={name:'Homer',lastame:'Simpson'}@BinaryMan更新是problem@BinaryMan,抱歉,荷马·辛普森中的逗号(“,”)只是一个例子,请尝试以下操作:user.name='homer';user.lastname='Simpson';user.markModified('name');user.markModified('lastname');等待user.save();但是,没有这些,为什么回调风格的代码可以工作呢?
user.name = 'Homer'; 
user.lastname = 'Simpson'; 
user.markModified('name'); 
user.markModified('lastname'); 
await user.save();