TypeORM 是否包含一些功能来避免这种情况:
let contraption = await thingRepository.findOne({ name : "Contraption" });
if(!contraption) // Create if not exist
{
let newThing = new Thing();
newThing.name = "Contraption"
await thingRepository.save(newThing);
contraption = newThing;
}
就像是 :
let contraption = await thingRepository.upsert({ name : "Contraption" });
原文由 LucasBordeau 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如 Tomer Amir 所指出的,目前有一个针对 真正 upsert 的部分解决方案,并且功能请求是在 TypeORM 的存储库上打开的 ATM :
TypeORM upsert 功能请求
部分解决方案:
旧答案实际上指向了执行 OP 要求的“更新”方式:
已经有一种方法:
Repository<T>.save()
,其中文档说:但是,如果您不指定 id 或唯一的字段集,则 save 方法无法知道您正在引用现有的数据库对象。
所以使用 typeORM 更新插入是: