typescript - 是否可以使用 TypeOrm 从对象设置字段值?

标签 typescript orm typeorm

是否可以使用 TypeOrm 保留类型安全性来设置对象的字段值?

我在文档中找到的所有示例都建议您逐一设置属性

const newUser = new User();
newUser.firstName = 'John'
newUser.lastName = 'Doe'
newUser.role = 'manager'
newUser.phone = '1234567890'
newUser.login = 'john.doe'
newUser.password = '12345'
newUser.save();

如果我可以这样设置字段,那就更好了:

const newUser = new User();
newUser.setFields({
        firstName: 'John',
        lastName: 'Doe',
        role: 'manager',
        phone: '1234567890',
        login: 'john.doe',
        password: '12345'
    }
);
newUser.save();

它将允许使用快捷方式

const newUser = new User();
newUser.setFields({
        firstName,
        lastName,
        role,
        phone,
        login: 'john.doe',
        password: '12345'
    }
);
newUser.save();

并使用组合

const newUser = new User();
newUser.setFields({
        firstName,
        lastName,
        role,
        phone,
        ...credentials
    }
);
newUser.save();

虽然我找不到任何方法来做到这一点。

我知道您需要有一种描述对象形状的类型才能实现它,但我希望 TS/TsOrm 能够以某种方式从我定义的模型中派生它。

最佳答案

实体或存储库的 createmerge 方法(取决于您的实现)将是您最有可能寻找的:

const userEntity = UserEntity.create({ firstName, lastName, ...someOtherStuff });
const mergedEntity = UserEntity.merge(mergedEntity, { lastName: "new last name" });

欲了解更多信息,请咨询documentation并向下滚动到提到的方法,其中包括以下示例:

const user = repository.create(); // same as const user = new User();
const user = repository.create({
    id: 1,
    firstName: "Timber",
    lastName: "Saw"
}); // same as const user = new User(); user.firstName = "Timber"; user.lastName = "Saw";

const user = new User();
repository.merge(user, { firstName: "Timber" }, { lastName: "Saw" });
// same as user.firstName = "Timber"; user.lastName = "Saw";

关于typescript - 是否可以使用 TypeOrm 从对象设置字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55564528/

相关文章:

Typescript 类型的通用和非通用版本

typescript - 类型缺少以下属性

android - React-Native TypeORM:循环依赖“t” Android版本构建

sql - "One-to-many"建模问题

postgresql - 跨模式与 typeorm 连接

angular - 如何模拟来自服务 Angular 7 的可观察值?

javascript - 从 react-router-dom 属性 'sumParams' 升级版本 4 useParams () 后 TypeScript 错误在类型 '{}' 上不存在

javascript - Typescript 异步函数包装 Promise

python - SQLAlchemy:具有复合主键的关系表

PHP:我可以与我的数据库表结构一起使用的 ORM 框架或库