Функция доступа в экспортированном модуле - PullRequest
0 голосов
/ 08 января 2019

Я хотел бы создать модуль, в котором у меня есть функция, в которую я могу вставить оператор SQL и получить результат в виде набора записей. Я новичок в nodeJs и имею некоторые проблемы с доступом к функциям.

мой модуль (sql.js)

var exports = module.exports = {};
sql = require('mssql');



let config = {
user: '###',
password '###'
server: '###',
database: '###',
driver: "###",
options: {
    trustedConnection: true
  }
};


var db = function (query) {
var rc;
console.log('verbinde');
sql.connect(config, function (err) {
    console.log('verbinde');
    if (err) console.log(err);

    let request = new sql.request();


    request.query(query, function (err, recordset) {
        if (err) console.log(err);
        console.log(recordset);
        rc = recordset;
    });
})

sql.close();
}

exports.db = db;

вызов

const ipc = require('electron').ipcMain;
const sql = require('../../customModules/sql.js');

console.log(sql.db('SELECT * FROM devices'));

я получаю неопределенное. похоже, что sql.connect не вызывается.

1 Ответ

0 голосов
/ 10 января 2019

Вы можете получить лучшие результаты, используя Promise. Возможно, что-то вроде этого (не проверено):

// sql.js

var db = (query) => new Promise((resolve, reject) => {
  console.log('verbinde');
  sql.connect(config, function (err) {
      console.log('verbinde');
      if (err) reject(err);

      let request = new sql.request();

      request.query(query, function (err, recordset) {
          if (err) reject(err);
          console.log('got those records!');
          resolve(recordset);
      });
  })

  sql.close();
})


// call
const ipc = require('electron').ipcMain;
const sql = require('../../customModules/sql.js');

sql.db('SELECT * FROM devices')
.then(data => console.log(data))
.catch(e => console.log(e));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...