如何在then()瓢节点js中更改变量内容

时间:2018-07-17 11:57:10

标签: javascript node.js asynchronous synchronization sequelize.js

我想从名为DataBaseNames的表中获取数据库名称

 this.connexion2.query('select dbName from DataBaseNames;')
          .then((names) => { console.log(names) })

然后我要连接到我找到的第一个数据库名称

module.exports.connexion1 = new Sequelize(names[0], 'root', 'mdp', {

  host: '01.01.01.01', 
  dialect: 'mssql', 
  operatorsAliases: false,
  port: 1433,
  pool: {
    max: 9,
    min: 0,
    acquire: 30000,
    idle: 10000
  },
  dialectOptions: {
    requestTimeout: 30000 // timeout = 30 seconds
  },
  logging: false
});

1 个答案:

答案 0 :(得分:0)

不可能保持此代码同步。一个模块应该导出一个Sequelize连接的承诺,而不是一个连接本身:

exports.connexion1 = connexion2.query('select dbName from DataBaseNames;')
.then((names) => {
    return new Sequelize(names[0], 'root', 'mdp', {
      host: '01.01.01.01', 
      dialect: 'mssql', 
      operatorsAliases: false,
      port: 1433,
      pool: {
        max: 9,
        min: 0,
        acquire: 30000,
        idle: 10000
      },
      dialectOptions: {
        requestTimeout: 30000 // timeout = 30 seconds
      },
      logging: false
    });
});

请注意,直到建立连接,连接才可用。因此,如this answer中所述,等待此承诺中的authenticate()可能会有所帮助。