当前位置: 首页 > 知识库问答 >
问题:

TypeORM的更新问题

高泳
2023-03-14

我正在尝试使用TypeORM将多个JSON数据插入到一个名为integration_data的表中。我的应用程序使用NodeJS。但是不知何故,我无法使用TypeORM形成查询,以在PostgresSQL中对我的JSON数据执行批量UpSert。

以下是我的逻辑:-

let dbConn = await database.getConnection(connectionOptions);
             await dbConn.createQueryBuilder()
                 .insert()
                 .into(IntegrationData)
                 .values(rawdata)
                 .onConflict(`("id") DO UPDATE SET "empData" = excluded."empData"`)
                 .execute();

在这里,我传递的是原始数据,它是一个 JSON 对象数组。

实体:-

import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

@Entity({ name: 'integration_data' })
export class IntegrationData {

    @PrimaryGeneratedColumn()
    id: number;

    @Column({ type: 'bigint', nullable: false, name: "emp_id" })
    empId: number;

    @Column({ type: 'text', nullable: false, name: "integration_name" })
    integrationName: string;

    @Column({ type: 'json', nullable: false, name: "emp_data" })
    empData: object

}

这里,integration_data表中的emp_data列属于JSON。以下是我的Postgres表:-

请告诉我如何执行upsert操作,即如果不存在则插入,否则根据唯一的emp_id更新Postgres数据库中的记录。

干杯

共有1个答案

阮梓
2023-03-14

您可以使用类型或记忆库.save() 方法在列设置为主键时执行更新插入。您只需将对象的数组传递到方法中即可。

从文档中:

 /**
 * Saves all given entities in the database.
 * If entities do not exist in the database then inserts, otherwise updates.
 */
 类似资料:
  • 我有一个在< code>postgresql数据库上使用< code>typeorm的更新查询,如下所示,该查询频繁地在20个项目的列表上执行(每30秒一次)。大约需要。更新12秒,对我的极限来说已经很多了。 是否有可能在单个查询中执行这样的批量更新,而不是迭代其他项?如果是的话-怎么做? 和对于每个项目都是唯一的。

  • 我已经为创建新表和更新后端的TypeORM实体苦苦挣扎了一周。我们将NestJS、GraphQL和TypeORM与PSQL数据库一起使用。我们有一个生产服务器/数据库设置,客户信息已经保存。我正在尝试使用代码优先的方法向数据库中添加一个新表来生成模式。在repo的主分支上,我在本地环境中启动它,并连接到一个干净的数据库。创建帐户并将信息保存到表后,我将切换到一个新分支,该分支包含用于实现新表的代码

  • 我正在使用(https://github.com/typeorm/typeorm)作为ORM库来连接postgresql数据库。我将几列保存为类型。现在我需要支持部分更新json数据,例如, 如果我只更新,我不想在更新语句中覆盖lastName。支持,我可以使用它来部分更新字段,但我如何使它与图书一起工作?

  • 失败:生成失败,出现异常。 错误:任务“:firebase_core:compiledebugjavawithjavac”执行失败。 找不到tools.jar。请检查C:\Program Files\Java\JRE1.8.0_251是否包含有效的JDK安装。 更新后,我开始出现这样的错误。有人能帮忙吗?

  • 我最初认为这个问题与我们使用的定制番石榴罐子(添加了beans.xml以规避兼容性问题)有关。我使用最新的Guava版本(18)重建了应用程序,但在部署到Glassfish 4.1时仍然遇到了同样的问题。应用程序部署到Glassfish 4.0和最新的Guava版本没有问题。

  • 我有一个简单的案例类: 我正在添加字段“name” java.util.NoSuchelementException:scala.collection.immutable.stream$empt$.head(stream.scala:1104)在scala.collection.immutable.stream$empt$.head(stream.scala:1102)在test.consumer