As far as I know, it's a best practice to return an item after it has been updated. TypeORM's updateById
returns void
, not the updated item though.
My question: Is it possible to update and return the modified item in a single line?
What I tried so far:
await this.taskRepository.updateById(id, { state, dueDate }); return this.taskRepository.findOne({ id });
What I'm looking for:
return this.taskRepository.updateById(id, { state, dueDate }); // returns updated task
To bulk update, you can use update with set method, it is always recommended to not use raw queries when you can use orm functions.
Relation optionscascade: boolean | ("insert" | "update")[] - If set to true, the related object will be inserted and updated in the database. You can also specify an array of cascade options. onDelete: "RESTRICT"|"CASCADE"|"SET NULL" - specifies how foreign key should behave when referenced object is deleted.
I just found out that I can do this with the .save
method:
return this.taskRepository.save({ id: task.id, state, dueDate });
According to the docs (section save
), partial updates are supported as well:
Also supports partial updating since all undefined properties are skipped.
To expand on sandrooco's answer, this is what I do:
const property = await this.propertyRepository.findOne({ where: { id } }); return this.propertyRepository.save({ ...property, // existing fields ...updatePropertyDto // updated fields });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With