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

时间:2019-04-30 08:31:09

标签: javascript node.js

我创建了一个文件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)之类的方法,但结果不会改变。 如何解决此错误? 我搜索了此内容,但无法解决。 谢谢。

3 个答案:

答案 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文件中的内容),可以解决此问题。