如何从使用node-oracledb的查询返回回调
How return callback from a query made with node-oracledb?
以下代码与node-oracledb GitHub示例中使用的代码相同,称为select1.js。我只是稍微修改了一下
module.exports = function() {
var oracledb = require('oracledb');
var dbConfig = require('./dbconfig.js');
this.queryDB = function (query) {
oracledb.getConnection({
user : dbConfig.user,
password : dbConfig.password,
connectString : dbConfig.connectString
}, function(err, connection) {
if (err) {
console.error(err.message);
return;
}
connection.execute(query, function(err, result) {
if (err) {
console.error(err.message);
doRelease(connection);
return;
}
console.log(result.metaData);
console.log(result.rows);
doRelease(connection);
return result.rows
});
});
function doRelease(connection) {
connection.release(function(err) {
if (err) {
console.error(err.message);
}
});
}
}
}
可以这样使用:
require('./dbquery.js')();
console.log(queryDB("SELECT * FROM users"));
我希望看到与"console.log(result.rows);"行相同的2D矩阵(表示表)。但是"console.log(queryDB("SELECT * FROM users"));"返回"undefined"。
我如何返回我在回调函数中得到的值?
我试着在开头添加一个变量X,像这样:
module.exports = function() {
var oracledb = require('oracledb');
var dbConfig = require('./dbconfig.js');
this.queryDB = function (query) {
var X;
oracledb.getConnection({
user : dbConfig.user,
password : dbConfig.password,
connectString : dbConfig.connectString
}, function(err, connection) {
if (err) {
console.error(err.message);
return;
}
connection.execute(query, function(err, result) {
if (err) {
console.error(err.message);
doRelease(connection);
return;
}
console.log(result.metaData);
console.log(result.rows);
doRelease(connection);
X = result.rows
});
});
function doRelease(connection) {
connection.release(function(err) {
if (err) {
console.error(err.message);
}
});
}
return X;
}
}
但这仍然没有定义。我怎样才能做到这一点呢?
它在
async
性质下运行。你可以用callback
或promises
来解它。你不能得到这样的值
传递callback
并返回回调
module.exports = function(callback) {//pass callback function and return with this
var oracledb = require('oracledb');
var dbConfig = require('./dbconfig.js');
this.queryDB = function(query,callback) {
oracledb.getConnection({
user: dbConfig.user,
password: dbConfig.password,
connectString: dbConfig.connectString
}, function(err, connection) {
if (err) {
console.error(err.message);
return callback(err);
}
connection.execute(query, function(err, result) {
if (err) {
console.error(err.message);
doRelease(connection);
return;
}
console.log(result.metaData);
console.log(result.rows);
doRelease(connection);
return callback(null, result.rows)
});
});
function doRelease(connection) {
connection.release(function(err) {
if (err) {
console.error(err.message);
return callback(err);
}
});
}
};
};
相关文章:
- 使用DynamoDB查询返回
- Firebase:查询返回null
- sqlite查询返回错误-can'我不知道为什么
- 需要呈现MongoDB查询返回结果的特定索引/位置
- mongoose查询返回链接到用户的产品
- Node.js:从mongoose查询返回正确的JSON
- 当查询返回对象时,Express Mongo回调返回undefined
- 无法向 Mongoose 查询返回的对象添加新属性
- 将 mysql 查询返回的数据转换为 json(基于树)
- 获取所有表行并使用 CasperJS 中的 XPath 查询返回它们
- 在猫鼬查询返回集合之前,应用程序应该如何处理 http get 响应
- 如何根据查询返回选择 html 下拉列表
- j查询返回错误时间的日期格式
- 如何从解析查询返回对象
- 维基百科API没有为某些查询返回任何内容
- 有没有一种方法可以将每个文本区域自动调整为其大小's从数据库查询返回的数据
- 如何在 parse.com 中从查询返回值
- 你能制作Dojo'如果给定#id,则s查询返回单个节点
- 如何用javascript解析SQL查询返回
- 最大查询返回带有sequelise.js的null对象