繁体   English   中英

从 Node.JS 中的外部 .js 文件调用方法

[英]Call method from external .js file in Node.JS

我创建了一个连接到 Oracle 数据库的文件db.js

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); var db = require('./db.js'); db.saveInDb(data); ,出现这个错误: TypeError: db.saveInDb is not a function 我尝试使用其他格式来定义像async function saveInDb(data)这样的方法,但结果没有改变。 我该如何解决这个错误? 我搜索了这个,但无法解决这个问题。 谢谢。

尝试:

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);
                    }
                }
            }
        }

 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 }

你的方法的问题是async function(){返回一个你试图在var db = require('./db.js'); db.saveInDb(data);作为函数调用的Promise var db = require('./db.js'); db.saveInDb(data); var db = require('./db.js'); db.saveInDb(data); , 因此错误。 适当地执行承诺(取决于 db.js 文件中的内容),这可以解决。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM