У меня есть служба для получения пользовательского приложения, которая принимает необязательный параметр listingId
(это отношение приложения) и имеет фиксированное предложение WHERE для user.id
, равного единице из входящего аутентифицированного запроса:
@Injectable()
export class ApplicationsService {
constructor(@Inject(REQUEST) private readonly request: any) {}
async list(listingId?: string) {
return Application.find({
where: {
user: { id: this.request.user.id },
listing: { id: listingId }
},
})
}
}
, к сожалению, реализация выше возвращает пустой массив. Вероятно, потому что { listing: { id: undefined } }
приводит к запросу «IS NULL», верно ?. Я нашел обходной путь для этого:
@Injectable()
export class ApplicationsService {
constructor(@Inject(REQUEST) private readonly request: any) {}
async list(listingId?: string) {
return Application.find({
where: {
user: { id: this.request.user.id },
...(listingId && { listing: { id: listingId } }),
},
})
}
}
, но я ищу более общий / более приятный способ, поскольку в будущем у меня может быть более одного необязательного параметра, и необходимость распространять их, как это, некрасиво и подвержены ошибкам. Не говоря уже о том, что код не читается.