Ricerca nel sito web

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();