Используете асинхронные / обратные вызовы для выборки данных? - PullRequest
1 голос
/ 05 августа 2020

Я понятия не имею, как преобразовать это в тип asyn c. Как я могу это преобразовать? Вот код

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 })
            })
    })
})

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Это работает?

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 })
        })
})

})

0 голосов
/ 05 августа 2020

Думаю, ты можешь вот так:

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});
    }
});
...