可以配置sequelize,以便它使用原生的es6 promise而不是bluebird副本吗?
根据他们的docs和续集4,他们正在使用蓝鸟的独立副本。但我想使用原生的es6承诺。
示例代码:
public find(selector: object): Promise<ClientEntity[]> {
// Client is of type Model<ClientModel>; see sequelize-typescript
return ClientModel.findAll(selector)
.then(res => res.map(e => e.toJSON()))
.catch(err => console.warn('PgClientModel#find', err));
}
显示以下错误:Type 'Bluebird<void | any[]>' is not assignable to type 'Promise<ClientEntity[]>'. Property '[Symbol.toStringTag]' is missing in type 'Bluebird<void | any[]>'
。
我现在看到的选项:
then
和catch
区块中,我可以通过原生es6承诺resolve
和reject
。但实际上我并不喜欢这个想法。我正在使用以下软件包
"sequelize": "^4.31.2",
"sequelize-typescript": "^0.6.2",
"typescript": "^2.6.2"
编辑:通过将返回类型更改为PromiseLike
来解决。
答案 0 :(得分:1)
你试过这个设置:
Sequelize.Promise = global.Promise
答案 1 :(得分:1)
我认为当前版本无法实现。似乎该库用Bluebird库的实例替换了Promise
关键字。