Javascript 使用异步/回调获取数据?

Javascript 使用异步/回调获取数据?,javascript,node.js,async-await,Javascript,Node.js,Async Await,我不知道如何将其转换为异步类型。我如何转换这个?这是密码 router.put('/unfollow', requireLogin, (req, res) => { User.findByIdAndUpdate(req.body.unfollowId, { $pull: {followers: req.user._id} },{ new: true },(err, result) => { if(err) re

我不知道如何将其转换为异步类型。我如何转换这个?这是密码

router.put('/unfollow', requireLogin, (req, res) => {
    User.findByIdAndUpdate(req.body.unfollowId, { 
        $pull: {followers: req.user._id}
    },{
        new: true
    },(err, result) => {
        if(err) return res.status(422).json({ error: err })
        User.findByIdAndUpdate(req.user._id, {
            $pull: { following: req.body.unfollowId }
        }, {
            new: true
        })
            .select('-password')
            .then(result => {
                res.json(result)
            })
            .catch(err => {
                return res.status(422).json({ error: err })
            })
    })
})

我认为你可以这样做:

router.put('/unfollow', requireLogin, async (req, res) => {
    try {
        await User.findByIdAndUpdate(req.body.unfollowId, {$pull: {followers: req.user._id}}, {new: true});
        const result = await User.findByIdAndUpdate(req.user._id, {$pull: {following: req.body.unfollowId}}, {new: true})
            .select('-password');
        res.json(result);
    } catch (err) {
        return res.status(422).json({error: err});
    }
});

我认为你可以这样做:

router.put('/unfollow', requireLogin, async (req, res) => {
    try {
        await User.findByIdAndUpdate(req.body.unfollowId, {$pull: {followers: req.user._id}}, {new: true});
        const result = await User.findByIdAndUpdate(req.user._id, {$pull: {following: req.body.unfollowId}}, {new: true})
            .select('-password');
        res.json(result);
    } catch (err) {
        return res.status(422).json({error: err});
    }
});
这样行吗

router.put('/unfollow', requireLogin, async (req, res) => {
await User.findByIdAndUpdate(req.body.unfollowId, { 
    $pull: {followers: req.user._id}
},{
    new: true
},(err, result) => {
    if(err) return res.status(422).json({ error: err })
    await User.findByIdAndUpdate(req.user._id, {
        $pull: { following: req.body.unfollowId }
    }, {
        new: true
    })
        .select('-password')
        .then(result => {
            res.json(result)
        })
        .catch(err => {
            return res.status(422).json({ error: err })
        })
})
})

这样行吗

router.put('/unfollow', requireLogin, async (req, res) => {
await User.findByIdAndUpdate(req.body.unfollowId, { 
    $pull: {followers: req.user._id}
},{
    new: true
},(err, result) => {
    if(err) return res.status(422).json({ error: err })
    await User.findByIdAndUpdate(req.user._id, {
        $pull: { following: req.body.unfollowId }
    }, {
        new: true
    })
        .select('-password')
        .then(result => {
            res.json(result)
        })
        .catch(err => {
            return res.status(422).json({ error: err })
        })
})

})

是,除非添加异步/等待部分,否则不会更改它。然而,它能工作吗?是的,除非添加异步/等待部分,否则不会更改它。然而,它是否有效?