在通过回调函数更新传递的变量之前呈现页面

时间:2019-09-23 11:46:05

标签: node.js mongodb function callback

在更新要传递的变量之后,无法呈现页面。

我正在使用节点js和mongodb。我想基本上使用mongodb数据库中的两个“查找”函数更新两个变量。然后,我想将这两个更新的变量传递给要呈现的页面。没有语法错误,因为我通过console.log检查了结果,唯一的问题是执行顺序。

negotiateBook
                                .find({ buyer: req.user.id })
                                .populate('buyer seller')
                                .exec(function(err, foundBook) {
                                    if (err) {
                                        console.log(err);
                                    } else {
                                        booksToBuy = foundBook;
                                    }
                                });
                            negotiateBook
                                .find({ seller: req.user.id })
                                .populate('buyer seller')
                                .exec(function(err, foundBook) {
                                    if (err) {
                                        console.log(err);
                                    } else {
                                        booksToSell = foundBook;
                                    }
                                });
                            res.render('my-books', {
                                booksToBuy: booksToBuy,
                                booksToSell: booksToSell
                            });

我想要页面booksToBuy上变量booksToSellmybooks的更新值。当前,即使页面正在渲染,两个变量都为空

编辑- 带有回调

findingCorrectBooks(req.user.id, function() {
                                negotiateBook
                                .find({ seller: req.user.id })
                                .populate('buyer seller')
                                .exec(function(err, foundBook) {
                                    if (err) {
                                        console.log(err);
                                    } else {
                                        booksToSell = foundBook;
                                    }
                                });
                            }, render(res, booksToBuy, booksToSell));
function findingCorrectBooks(userId, callback, render) {
    negotiateBook
    .find({buyer: userId})
    .populate('buyer seller')
    .exec(function(err, foundBook) {
        if (err) {
            console.log(err);
        } else {
            booksToBuy = foundBook;
        }
    });
}

function render(res, booksToBuy, booksToSell) {
    res.render('mybooks', {booksToBuy: booksToBuy, booksToSell: booksToSell});
}

0 个答案:

没有答案