Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeORM: update item and return it

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 
like image 223
sandrooco Avatar asked Dec 13 '17 12:12

sandrooco


People also ask

How do you update multiple columns in Typeorm?

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.

How do you change the relationship in Typeorm?

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.


2 Answers

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.

like image 129
sandrooco Avatar answered Sep 22 '22 14:09

sandrooco


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 }); 
like image 26
Danny Pule Avatar answered Sep 20 '22 14:09

Danny Pule