簡體   English   中英

導出模塊中的訪問功能

[英]Access Function in a Exported Module

我想創建一個模塊,在這里我有一個函數,可以在其中插入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被調用了。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM