如何在 sequelize 连接对象中设置应用程序名称?
How to set application name in sequelize connection object?
总结:
我想在初始化新的 sequalize 对象时更改 connection string
的 application name
。基于,我将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 分析器图片是:
如何正确设置 Application Name
?
您必须在选项对象中设置 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
}
}
});
在 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"
}
});
总结:
我想在初始化新的 sequalize 对象时更改 connection string
的 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: 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 分析器图片是:
如何正确设置 Application Name
?
您必须在选项对象中设置 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
}
}
});
在 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"
}
});