我应该在哪里呼叫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涉及任何数据库请求,对我们的数据库没有任何损害。
我直接使用我们的生产数据库进行测试,因此要谨慎
因此Max在他的回答中提供了以下代码
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);
});
我能理解我提出的超级愚蠢的问题,非常抱歉。
答案 0 :(得分:2)
您无法导出功能结果。您想导出一个将返回您的值的函数。像这样:
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;
因为你的函数是异步的,所以我返回了一个将返回结果的promise。此外,查询中的第二个错误的名称与连接中的第一个错误的名称相同。这会引起问题。
如何使用它的示例:
const connectToSql = require('./connectToSql');
connectToSql()
.then(details => {
console.log(details);
})
.catch(err => {
console.log(err);
});