#mysql #typescript #backend #typeorm
#mysql #typescript #серверная часть #typeorm
Вопрос:
Предположения
-
Вызывается несколько экземпляров одного объекта
Product
. -
Product
имеет три свойства, называемые 1)id
, 2)name
и 3)active
. -
Текущие экземпляры в базе данных выглядят следующим образом:
[ { id: 1, имя: ‘A’, активный: 0 }, { id:2, имя: ‘B’, активный: 1 }, { id: 3, имя: ‘C’, активный: 0 }, ]
Проблема
Я хотел бы обновить только некоторые свойства нескольких экземпляров по их идентификаторам с помощью запроса, подобного этому:
Product.update(
[1,2] , // ids
{
name: 'example'
}
)
Я ожидаю чего-то подобного:
[
{
id:1,
name:'example',
active: 0
},
{
id:2,
name:'example',
active: 1
},
{
id:3,
name:'C',
active: 0
},
]
Но этот запрос устанавливает остальные свойства, которые active
в этом примере используются по умолчанию! Результат выглядит следующим образом:
[
{
id:1,
name:'example',
active: 0
},
{
id:2,
name:'example',
active: 0 // which is wrong!
},
{
id:3,
name:'C',
active: 0
},
]
Вопросы
- Как можно обновлять только существующие свойства в запросе (например,
name
)? - Как решить эту проблему с помощью
save
метода using? (Я не могу перейтиids
кsave
методу)
Ответ №1:
Я решил эту проблему с помощью createQueryBuilder
:
await getManager()
.createQueryBuilder()
.update(Product)
.set({
name: 'example'
})
.where('id IN (:ids)', { ids: [1,2] })
.execute();