我创建了一个文件db.js
,该文件连接到Oracle数据库。
process.env.ORA_SDTZ = 'UTC';
var oracledb = require('oracledb');
exports.saveInDB = async function(data) {
let connection;
try {
let sql, binds, options, result;
binds = [];
connection = await oracledb.getConnection({
user: "user",
password: "pass",
connectString: "localhost/dbname"
});
var start = new Date();
for (var i = 1; i <= 100; i++) {
sql = `INSERT INTO mytab VALUES (:1, :2, :3)`;
binds = [
[i, "Inserted row number => " + i + " =>" + data, 0]
];
options = {
autoCommit: true,
bindDefs: [
{ type: oracledb.NUMBER },
{ type: oracledb.STRING, maxSize: 999 },
{ type: oracledb.NUMBER }
]
};
result = await connection.executeMany(sql, binds, options);
console.log("Inserted row number => ", i);
}
var end = new Date() - start;
console.info('Execution time: %dms', end);
} catch (err) {
console.error(err);
} finally {
if (connection) {
try {
await connection.close();
} catch (err) {
console.error(err);
}
}
}
}
当我要呼叫var db = require('./db.js'); db.saveInDb(data);
时,发生此错误:TypeError: db.saveInDb is not a function
。
我尝试使用其他格式来定义async function saveInDb(data)
之类的方法,但结果不会改变。
如何解决此错误?
我搜索了此内容,但无法解决。
谢谢。
答案 0 :(得分:0)
尝试:
export const saveInDB = async function(data) {
let connection;
try {
// my codes....
}
var end = new Date() - start;
console.info('Execution time: %dms', end);
} catch (err) {
console.error(err);
} finally {
if (connection) {
try {
await connection.close();
} catch (err) {
console.error(err);
}
}
}
}
答案 1 :(得分:0)
process.env.ORA_SDTZ = 'UTC';
var oracledb = require('oracledb');
const saveInDB = async function(data) {
let connection;
try {
// my codes....
}
var end = new Date() - start;
console.info('Execution time: %dms', end);
} catch (err) {
console.error(err);
} finally {
if (connection) {
try {
await connection.close();
} catch (err) {
console.error(err);
}
}
}
}
export { saveInDB }
答案 2 :(得分:0)
您的方法存在的问题是Promise
返回了一个var db = require('./db.js'); db.saveInDb(data);
,您试图将其作为函数在{{1}}中调用,因此会出现错误。
正确执行promise(取决于db.js文件中的内容),可以解决此问题。