Как использовать сервисный слой в узле js - PullRequest
0 голосов
/ 09 февраля 2019

Я новичок для Node js.Я использую экспресс и сиквелиз для своего приложения.

Это моя функция маршрутизатора.

router.post('/add-merchant', [
    check('name').not().isEmpty(),
    check('city').not().isEmpty(),
    check('state').not().isEmpty(),
    check('country').not().isEmpty(),
], (req, res, next) => {
    try {
        const errors = validationResult(req);

        if (!errors.isEmpty()) {
            return res.json({ errors: errors.array()});
        }

        var merchant = merchantService.addMerchant(req);
        return res.json(merchant)
    } catch (error) {
        return res.json({"status": "error", "message": error.message})
    }
});

Я создал файл с именем merchantService.js

Я добавил код длявставляю данные в merchantService.js и пробую вот так

var merchant = merchantService.addMerchant(req);

Но я не могу получить никаких данных от продавца.Вот мой сервисный код продавца

var models = require ("../ models");

var merchantService = {
    addMerchant: (req) => {
        models.merchants.create(req.body).then((merchant) => {
            return merchant.dataValues
        });
    }
}

module.exports = merchantService;

Я не могу найти проблему.Пожалуйста, помогите кому-нибудь решить эту проблему.

Заранее спасибо

1 Ответ

0 голосов
/ 09 февраля 2019

Вы управляете асинхронной задачей синхронизированным способом, и она не работает.

Вам следует изменить обработчик запроса следующим образом:

router.post('/add-merchant', [
  check('name').not().isEmpty(),
  check('city').not().isEmpty(),
  check('state').not().isEmpty(),
  check('country').not().isEmpty(),
], (req, res, next) => {
  try {
    const errors = validationResult(req);

    if (!errors.isEmpty()) {
      return res.json({ errors: errors.array() });
    }

     merchantService.addMerchant(req).then((merchant)=>{
      res.json(merchant)
    })
  } catch (error) {
    return res.json({ "status": "error", "message": error.message })
  }
});

И исправить сервис продавцавот так (см. значение return, чтобы начать цепочку обещаний):

const merchantService = {
  addMerchant: (req) => {
    return models.merchants.create(req.body)
      .then((merchant) => {
        return merchant.dataValues
      });
  }
}

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