PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Комбинирайте вложени заявки на цикъл към резултат от родителски масив - pg-promise

Аз съм автор на pg-promise;)

con.task(t => {
    const a = post => t.any('SELECT * FROM comment WHERE idPost = $1', post.id)
        .then(comments => {
            post.comments = comments;
            return post;
        });
    return t.map('SELECT *, avatar FROM post, users WHERE user = $1 AND user = alias ORDER BY time DESC LIMIT 10 OFFSET $2', [username, pos], a)
        .then(t.batch);
})
    .then(posts => {
        res.send(posts);
    })
    .catch(error => {
        console.log(error);
    });

Вижте също този въпрос:вземете таблица JOIN като масив от резултати с PostgreSQL/NodeJS.

АКТУАЛИЗИРАНЕ

В случай, че не искате да стигнете докрай с подхода на заявката JSON, следното ще се мащабира много по-добре от оригиналното решение, тъй като ние свързваме всички дъщерни заявки и след това ги изпълняваме като една заявка:

con.task(async t => {
    const posts = await t.any('SELECT *, avatar FROM post, users WHERE user = $1 AND user = alias ORDER BY time DESC LIMIT 10 OFFSET $2', [username, pos]);
    const a = post => ({query: 'SELECT * FROM comment WHERE idPost = ${id}', values: post});
    const queries = pgp.helpers.concat(posts.map(a));
    await t.multi(queries)
        .then(comments => {
            posts.forEach((p, index) => {
                p.comments = comments[index];
            });
        });
    return posts;
})
    .then(posts => {
        res.send(posts);
    })
    .catch(error => {
        console.log(error);
    });

Вижте API:

  • helpers.concat
  • База данни.мулти


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка в Postgres:Повече от един ред, върнати от подзаявка, използвана като израз

  2. Как работи функцията CONCAT() в PostgreSQL

  3. Откриване на дублиращи се елементи в рекурсивния CTE

  4. Избройте колони с индекси в PostgreSQL

  5. Функция SUM() в PostgreSQL