我正在使用带有nest.js的node.js后端和用于数据库操作的typeorm。我获取一个JSON,其中包含我想要保存在mySQL数据库中的对象列表。该数据库将每天更新,但我只想保存该表中尚未存在的数据。我认为typeorm的repository.save()
已经做到了,但事实并非如此。
save
- 保存给定实体或实体数组。如果该实体已存在于数据库中,则会更新该实体。如果数据库中不存在该实体,则会插入该实体。
也许是因为我在保存时生成了一个uuid列,而且认为它是一个不同的项目?有人可以帮我弄这个吗。
async writeNewEPG(epgData: EpgDataDTO[]){
const data = await this.epgDataRepository.create(epgData);
const response = await this.epgDataRepository.save(data);
return response;
}
实体:
import { Entity, Column, PrimaryColumn, PrimaryGeneratedColumn } from 'typeorm';
@Entity('epg_data')
export class EpgDataEntity {
@PrimaryColumn()
@PrimaryGeneratedColumn('uuid')
uuid: string;
@Column({type: "text", nullable: true})
sname: string;
@Column({type: "text", nullable: true})
title: string;
@Column({type: "int", nullable: true})
begin_timestamp: number;
}
我遇到了这个问题;所以我通常首先检查项目是否存在
async writeNewEPG(epgData: EpgDataDTO[]){
let oldData = await this.epgDataRepository.find(epgData);
if (oldDate) {
... update data entity ( oldData.sname = epgData.sname; etc)
} else {
... create new data entity ( oldData = new EpgDataEntity(); )
}
const response = await this.epgDataRepository.save(oldData);
return response;
}
这似乎很难编码一切。我也尝试过await Repository.updateOne(oldData)
,有时我会遇到意想不到的错误。渴望找到正确的答案。