Рефакторинг в асинхронное / ожидание - PullRequest
0 голосов
/ 01 октября 2018

Я только учусь использовать async / await, и я пытаюсь реорганизовать свои обратные вызовы, чтобы использовать его.

Я просто хочу знать, правильно ли я это делаю ... или кто-то может объяснить этодля меня, как будто вы разговариваете с 10-летним.

это код, который я пытаюсь реорганизовать

router.post("/", middleware.isLoggedIn,  async function(req, res) {
//lookup book using id

var username = req.user.username;
var userId = req.user._id;
var available = req.body.available;
var daysToAdd = 2;
var reservedBy = {username: username, userId: userId, available: available};

Book.findById(req.params.id, function(err, book) {
    if (err) {
        console.log(err);
    } else {
        //create new reserve name

        Reserve.create(reservedBy, function(err, reserve) {
            if (err) {
                console.log(err);
            } else {
                reservedBy.username)
                // console.log("new reserves username " + reservedBy.available)
                reserve.returnDate = reserve.borrowDate.setDate(reserve.borrowDate.getDate() + daysToAdd);
                reserve.reserved.id = reservedBy.userId;
                reserve.reserved.username = reservedBy.username;
                // //save review
                reserve.save();
                //connect reserve user to book
                //redirect to book show page
                book.reserves.push(reserve);
                if (book.available < 1) {
                    req.flash("error", "There are no more available books");
                    res.redirect("/library/" + book._id);
                } else {
                    book.available--;
                    book.save();
                    res.redirect("/library/" + book._id);
                }
            }
        });
    }
});

});

и это то, что я рефакторинг до сих пор ..

try {
    let book = await Book.findById(req.params.id);
    let reserve = await Reserve.create(reservedBy);

    reserve.returnDate = reserve.borrowDate.setDate(reserve.borrowDate.getDate() + daysToAdd);
    reserve.reserved.id = reservedBy.userId;
    reserve.reserved.username = reservedBy.username;
    reserve.save();

    book.reserves.push(reserve);
    if (book.available < 1) {
        req.flash("error", "There are no more available books");
        res.redirect("/library/" + book._id);
    } else {
        book.available--;
        book.save();
        res.redirect("/library/" + book._id);
    }

} catch(err) {
  req.flash('error', 'Something went wrong!');
  res.redirect('back');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...