Откуда я должен вызвать module.exports, чтобы получить ненулевое значение? - PullRequest
0 голосов
/ 15 мая 2018

Где я должен вызывать module.export, я полагаю, это должна быть функция обратного вызова.

Но я не совсем понимаю, где я должен вызывать функцию обратного вызова.

Я все еще путаюсь с решением, слишком сложным для меня.

sql.connect(config, function(err) {

  if (err)
    console.log(err);

  // create Request object
  var request = new sql.Request();

  // query to the database and get the records
  request.query('select part_num,qty from CRM.CRM.Fishbowl_Inventory where not location = \'Shipping\'',

    function(err, recordset) {

      if (err)
        console.log(err)

      // send records as a response
      var details = recordset;
    });
});

module.exports = details;

Путаница:

Очень жаль беспокоить вас, ребята, но я хочу быть увереннымчто я не причиняю вреда нашей базе данных, включая любой запрос к базе данных через Javascript.

Я тестирую непосредственно с нашей производственной базой данных, поэтому осторожно

Макс дал в своем ответе следующий код

const connectToSql = require('./connectToSql');

connectToSql()
    .then(details => {
        console.log(details);

    //Here I can do as much logic as I want 
    //And it won't affect my database or call multiple requests on my DB 


    })
    .catch(err => {
        console.log(err);
    });

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

1 Ответ

0 голосов
/ 15 мая 2018

Вы не можете экспортировать результат своей функции. Вы хотите экспортировать функцию, которая будет возвращать ваше значение. Как это:

function connectToSql(config) {
  return new Promise((resolve, reject) => {
    sql.connect(config, function (err) {

      if (err) {
        console.log(err);
        reject(err);
      }

      // create Request object
      var request = new sql.Request();

      // query to the database and get the records
      request.query('select part_num,qty from CRM.CRM.Fishbowl_Inventory where not location = \'Shipping\'',

        function (requestErr, recordset) {

          if (err) {
            console.log(requestErr);
            reject(requestErr);
          }

          resolve(recordset);
        });
    });
  });
}

module.exports = connectToSql;

Поскольку ваша функция асинхронная, я вернул обещание, которое вернет ваш результат. Кроме того, ваша вторая ошибка в вашем запросе называется так же, как ваша первая ошибка в соединении. Это может вызвать проблемы.

Пример использования этого:

const connectToSql = require('./connectToSql');

connectToSql()
    .then(details => {
        console.log(details);
    })
    .catch(err => {
        console.log(err);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...