javascript - typeorm leftJoinAndMapMany con sottoquery
Sto usando typeorm per scrivere una query per selezionare record dal database Postgres Sql, ma sto ricevendo questo errore:
{
"errorType": "QueryFailedError",
"errorMessage": "syntax error at or near \".\""
}
Il mio codice fino ad ora:
let results = await contacts
.leftJoinAndMapMany(
"contact.cases",
(qb) => {
return qb.from(Case, "case");
},
"case",
"case.billingContactId = contact.id "
)
.getMany();
Risposta n. 1
Potrebbe essere una risposta tardiva, ma spero che funzioni.
.leftJoinAndMapMany('contact.cases',
(qb)=> qb.select([
/// select exact columns that you want to call, which optimizes your sql performance.
])
.from(Case, 'c'),
'c',
'c.billingContactId = contact.id')
Poiché usi 'subquery', dovrebbe essere getRawMany(); e non getMany().
Inoltre, non usare return ~ in questo caso.
Se non devi usare 'MapMany', puoi anche applicare in questo modo:
const caseQuery = this.case(just saying, entity's name).createQueryBuilder()
.subQuery()
.select([
'c.id',
'c.name', -- whatever you like.
...
])
.addSelect(' //you also add like "COUNT(sth)" or ROW_NUMBER() ... ')
.from(Case, 'c')
.getQuery()
const results = this.contacts.createQueryBuilder('ct')
.leftJoin(caseQuery, 'cq(alias)', 'cq.billingContactId = ct.id')
.getRawMany();
