sequelize.Model.Update 的 Typescript 接口(interface)不正确?

标签 typescript sequelize.js

我正在使用 Sequelize 和 typescript 。我正在使用这个定义 sequelize.d.ts

我发现使用 model.update 的问题方法,此接口(interface)接收将要更新的值作为第一个参数,但此参数有 TAttributes类型。我认为这个论点应该是 string类型。因为我们可以通过只发送 TAttributes 的一个子集来使用这个函数。

让我举个例子,如果我有这样的模型:

 Person.attribues: {
   id: number;
   field1: string;
   field2: number;
 }

然后,在创建并持久化一个实例之后,我想要更新文件 2,我应该这样做:
Person.update(
   {field2: 5},
   {where: {id: 1}}
)

对于这个例子,我遇到了 typescript 错误,因为第一个参数需要 Person.attributes 类型的东西我只提供子集 {field2: 5}
我已经在 github 中做了一个问题,你怎么看?我在想好吗?

最佳答案

您应该使用 sequelize.d.ts 的属性声明具有可选的属性名称,正是因为如此。

在您的情况下,您需要执行以下操作:

interface PersonAttributes {
   id?: number;
   field1?: string;
   field2?: number;
}

通过这样做,当您使用 update 时,它​​将特别允许您仅更新一个属性。

您可以查看 sequelize-tests.d.ts 中的示例以供进一步引用。

关于sequelize.Model.Update 的 Typescript 接口(interface)不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38689561/

相关文章:

angular - 订阅 Angular 服务中变量值的变化

mysql - 使用 Sequelize.js 加入特定列

javascript - 有人可以帮我从我的 Db Sequelize 中删除记录吗?

join - 在include in sequelize(node.js express)中使用models.sequelize.col()时出现模棱两可的错误

typescript - Cypress 在 Jest 断言中导致类型错误

angular - 如何在不使用 declare var 的情况下使用 Angular-CLI 将通过 CDN 交付的第三方库导入 Angular/Typescript?

typescript - 样式组件 defaultProps

javascript - 尝试使用服务在组件之间传递数据

model - 如何使用 or (Op.or/$or) 运算符指定该阶段应等于 null OR Junior 或 Senior 进行 Sequelize ?

javascript - Sequelize Date 返回错误的日期(减 1)