как использовать репозиторий в typeorm?

#typeorm

#typeorm

Вопрос:

Шаги для воспроизведения или небольшой репозиторий, показывающий проблему:

    let pid = tabla.id

    return await this.Repository.update(
      {predeterminado: false},
      {predeterminado: true, id: Not(pid)})
  

Приведенное выше выдает следующую ошибку: ожидаемый тип исходит из свойства ‘id’, которое объявлено здесь в типе ‘QueryDeepPartialEntity’

Если я делаю это с помощью Query Builder, он работает нормально.

 let pid = tabla.id

  return await this.Repository
  .createQueryBuilder()
  .update(AlicuotasIva)
  .set({predeterminado: false})
  .where("id != :pid",{pid})
  .andWhere("predeterminado = 1")
  .execute();
  

Ответ №1:

Из вашего примера я не уверен, что вы правильно задали параметры, я опишу их в комментариях к коду:

 let pid = tabla.id

return await this.Repository.update(
  {predeterminado: false}, // <-- first parameter of update method is criteria (find condition)
  {predeterminado: true, id: Not(pid)}) // <-- the second parameter is your updates
  

Итак, я думаю, вам нужно просто переключить параметры местами, и это сработает:

 let pid = tabla.id

// this query means that you set 'predeterminado' to 'false' for those rows which currently 'predeterminado == true' and their 'id != pid'
return await this.Repository.update(
  {predeterminado: true, id: Not(pid)},
  {predeterminado: false}
)
  

Комментарии:

1. Верно, вы абсолютно правы. Большое вам спасибо за ваш ответ.