如何在 Sequelize 查询中为属性添加类型安全性

问题描述 投票:0回答:1

来自文档:https://sequelize.org/master/manual/model-querying-basics.html#specifying-attributes-for-select-queries

Model.findAll({
  attributes: ['foo', 'bar']
});

这是可怕的,因为它不允许 ORM 的主要优点之一:类型安全。

我想做的是:

Model.findAll({
  attributes: [Model.foo, Model.bar]
});

其他 ORM 支持这一点。例如 Prisma 和实体框架(显然是 .Net)。

有什么办法可以用Sequelize实现类似的效果吗?也许甚至还有一些额外的图书馆?

sequelize.js sequelize-typescript
1个回答
0
投票

您可以创建类型:

type ModelAttributes = keyof Model;

那么你可以使用这个类型:

const attr: ModelAttributes[] = ['foo', 'bar'];
Model.findAll({
  attributes: attr,
});

有关 keyof 类型运算符的文档

© www.soinside.com 2019 - 2024. All rights reserved.