如何从 TypeORM Repository 函数(如 findcreateupdatedelete )返回一个普通的 JavaScript 对象?

const user = User.findOne({ where: { id: 1 } });

实际的:
User | undefined

{
  User: {
    id: 1
  }
}

相反,我想接收一个独立于任何库/框架的普通对象

预期的:

{
  id: 1
}

通过这种方式,独立于框架会更容易,并且您的存储库调用可以在任何时间点互换,而无需重写整个应用程序,也不会过分依赖第三方脚本。

例如 Sequelize 有一个选项 { plain: true }

最佳答案

您可以轻松地使用 class-transformer 库从实体实例生成普通对象:

https://github.com/typestack/class-transformer

const user = repository.findOne({ where: { id: 1 } });
const plain = classToPlain(user);

另一种方法是使用 queryBuilder API 并从数据库返回原始结果
const rawResult = repository.createQueryBuilder("user")
    .select("user")
    .where("user.id = :id", {id: 1})
    .getRawOne();

关键是你为什么要这样做?实体是 TypeOrm 中的第一个公民,因此您希望其结构上的任何更改都应在某些不兼容的情况下生成编译错误。使用普通对象会隐藏合约更改,并且您只会在运行时发现错误,不确定这是否是我认为使用 TypeOrm 的最佳方式。

关于javascript - TypeORM 返回普通对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58922884/

10-11 16:38