Mad*_*deo 3 javascript asynchronous amazon-web-services node.js sequelize.js
由于在 Sequelize 中找不到有效的异步配置示例,我已经为此苦恼了好几天
所以你可能知道,你可以像这样简单地配置一个 Sequelize 实例
const sequelize = new Sequelize('postgres://user:pass@example.com:5432/dbname')
Run Code Online (Sandbox Code Playgroud)
然后声明你的模型
const User = sequelize.define('User', {
// Model attributes are defined here
firstName: {
type: DataTypes.STRING,
allowNull: false
},
lastName: {
type: DataTypes.STRING
// allowNull defaults to true
}
}, {
// Other model options go here
});
Run Code Online (Sandbox Code Playgroud)
但是,当数据库凭据来自外部服务时会发生什么?
const sequelize = new Sequelize('postgres://user:pass@example.com:5432/dbname')
Run Code Online (Sandbox Code Playgroud)
由于续集模型的创建与实例的创建相结合(与许多其他 ORM 不同),这成为一个大问题。
我目前的解决方案如下:
const User = sequelize.define('User', {
// Model attributes are defined here
firstName: {
type: DataTypes.STRING,
allowNull: false
},
lastName: {
type: DataTypes.STRING
// allowNull defaults to true
}
}, {
// Other model options go here
});
Run Code Online (Sandbox Code Playgroud)
但是我觉得这不是一个好方法,因为初始化的异步特性有时db是未定义的。有没有更好的方法来处理这件事?谢谢
小智 5
您可以使用 beforeConnect 钩子来实现这一点,如下所示:
sequelize = new Sequelize(config.database, '', '', config);
sequelize.beforeConnect(async (config) => {
config.username = await getSecretUsername();
config.password = await getSecretPassword();
});
Run Code Online (Sandbox Code Playgroud)
将初始凭据留空,然后使用 beforeConnect 更改配置。不确定这是否是最干净的使用方式,但似乎有效。
https://sequelize.org/master/manual/hooks.html
| 归档时间: |
|
| 查看次数: |
1691 次 |
| 最近记录: |