我具有以下功能,但似乎无法弄清其返回类型
export function save(contractType: ContractType, tx?: Knex.Transaction): any {
return db
.connection(tx)(CONTRACT_TYPE_TABLE)
.insert(contractType)
.catch(err => {
throw new DatabaseError(en.GENERIC_ERROR, err);
});
}
答案 0 :(得分:0)
基于GitHub上可用的类型定义,我假设您正在使用QueryBuilder
实例。
interface QueryBuilder extends QueryInterface, ChainableInterface
这意味着您的Insert方法在实现QueryInterface
和ChainableInterfaces
接口的对象上被调用。
Insert
在QueryInterface
接口中定义,并返回它被调用的QueryBuilder
。信息不多。
相反,我们看着ChainableInterface
扩展了BlueBird<any>
。
interface ChainableInterface extends Bluebird<any>
Bluebird是许多JavaScript Promise库之一。您可以详细了解here
所以,总结到目前为止我们所知道的一切...
插入返回
Bluebird<any>
看一下Bluebird库,似乎Catch
返回了已被调用的Promise对象(如Promise库所期望的那样)。这意味着您的方法实际上返回了Bluebird<any>
许诺
对于实际类型...根据Knex文档中提供的示例,Insert
应该返回一个带有插入记录索引的数组。因此,假设您正在使用返回数字数组的Promise,应该足够安全。
结论:
您的方法返回一个QueryBuilder
对象,该对象可用于构建更多查询(这应该是ChainableInterface
的目的)。 应该还可以作为Bluebird<number[]>
的保证,如果需要,您可以用来获取插入的记录标识符。