导出模块中的访问功能

时间:2019-01-08 16:03:13

标签: node.js sql-server electron

我想创建一个模块,在这里我有一个函数,可以在其中插入sql语句并将结果作为记录集。我是nodeJ的新手,在访问功能方面有些麻烦。

我的模块(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 isnt rly被调用了。

1 个答案:

答案 0 :(得分:0)

使用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));