【问题标题】:How to set application name in sequelize connection object?如何在 sequelize 连接对象中设置应用程序名称?
【发布时间】:2021-11-23 22:13:26
【问题描述】:

总结:

我想在初始化一个新的sequalize对象时更改connection stringapplication name。基于this stackoverflow question,我设置dialectOptions的appName如下:

    let conn = new Sequelize(this.models.sequelize.config.database, this.models.sequelize.config.username,
                this.models.sequelize.config.password, {
                host: this.models.sequelize.config.host,
                dialect: this.models.sequelize.getDialect(),
                dialectOptions: {
                    appName: "userid=-2@gid=" + gid
                }
            });

问题:

当我执行类似以下代码的事务时,application name 不会传递给 SQL 服务器。当我监控SQL查询的执行时,下图显示Tedious被发送到应用名称。

交易代码:

    await conn.transaction(async t => {
                for(let i in this.collect){
                    let queryBuilder = this.collect[i];
                    let options = {replacements: queryBuilder.replacement, transaction: t};
                    if(queryBuilder.type === 'insert'){
                        options.type = conn.QueryTypes.INSERT;
                    }
                    let row = await conn.query(queryBuilder.query + ';select @@IDENTITY as id', options);
                    progressBar.update(parseInt(i) + 1);
                }

SQL Profiler 图片是:

如何正确设置Application Name

【问题讨论】:

  • 自从我使用 Sequelize 已经有一段时间了,但是您可以为您的方言使用硬编码值,例如“mssql”,而不是您拥有的 dialect: this.models.sequelize.getDialect() 所以您将拥有 dialect: 'mssql' 或使用 postgres , mysql 或任何你的方言?
  • 还是一样。 application name 仍然很乏味。

标签: node.js sequelize.js tedious


【解决方案1】:

在 postgreSQL 上,您需要像这样在 dialectOptions 对象中设置属性 application_name

let conn = new Sequelize(this.models.sequelize.config.database, this.models.sequelize.config.username,
            this.models.sequelize.config.password, {
            host: this.models.sequelize.config.host,
            dialect: "postgres",
            dialectOptions: {
               application_name: "yourApp"
            }
        });

【讨论】:

    【解决方案2】:

    您必须在选项对象中设置 appName,这样语法才能正确

    let conn = new Sequelize(this.models.sequelize.config.database, this.models.sequelize.config.username,
                this.models.sequelize.config.password, {
                host: this.models.sequelize.config.host,
                dialect: this.models.sequelize.getDialect(),
                dialectOptions: {
                   options: {
                      appName: "userid=-2@gid=" + gid
                   }
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-22
      • 2010-09-23
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      相关资源
      最近更新 更多