JavaScript - получить значения из базы данных и передать в res.render - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь создать функцию, которая будет возвращать значения из БД, а затем мне нужно перейти к res .render, я использую обратный вызов, чтобы сначала завершить функцию, а затем перейти к следующей, но все же result переменная пуста

router.get('/add_item', isAuthenticated, function(req, res, next) {
    var result = userMerchantlist(req.session.userId);
    res.render('merchants/add_item', {
        merchants: result,
        title: 'Add Item'
    });
});

function userMerchantlist(uderid, callback){   
    db.merchants.findAll({
        where: {
            merchants_owner: uderid,
            merchant_type: 'store',
        }
    })
    .then((result) => {
        if (result) {
           callback(null,result);
        }
    });
};

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Вот ваше решение, но немного более короткое:

router.get('/add_item', isAuthenticated, function (req, res, next) {
    userMerchantlist(req.session.userId).then(result => {
        if (result) {
            res.render('merchants/add_item', {
                merchants: result,
                title: 'Add Item',
            });
        }
    });
});

var userMerchantlist = uderid => {
    return new Promise((resolve, reject) => {
        db.merchants.findAll({
            where: {
                merchants_owner: uderid,
                merchant_type: 'store',
            }
        })
            .then(resolve)
            .catch(reject)
    });
};
0 голосов
/ 22 декабря 2018

Используя Обещания, я решил сам, для ответа вот код

router.get('/add_item', isAuthenticated, function(req, res, next) {
userMerchantlist(req.session.userId).then((result) => {
            if (result) {
                res.render('merchants/add_item', {
                    merchants: result,
                    title: 'Add Item',

                });
            }
        });


});

var userMerchantlist = function (uderid) {

  var promise = new Promise(function (resolve, reject) {
       db.merchants.findAll({
            where: {
                merchants_owner: uderid,
                merchant_type: 'store',
            }
        })
        .then((result) => {
            if (result) {
               resolve(result);
            }
        }).catch(error => {
            reject(error);
        });
   });

  return promise;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...