Найдите недавно добавленную сущность с условием связи

#javascript #sql #typeorm

Вопрос:

Я пытаюсь понять, как объединить страницы и выбрать только последнюю. У меня ошибка «идентификатор с разделителями нулевой длины в или рядом «»»»»» в этом запросе. В чем проблема?

 return this.createQueryBuilder('page')
    .leftJoin(
      qb =>
          qb.from(PageContent, 'PageContent')
              .select('MAX(PageContent."createdAt")', 'created_at')
              .addSelect('PageContent."pageId"', 'page_id')
              .groupBy('"page_id"'),
      '"last_version"',
      '"last_version"."page_id" = page.id'
  )
  .leftJoinAndSelect('page.pageContents', '"PageContent"', '"PageContent."createdAt" = "last_version"."created_at"')
  .where('page.id = :id', { id: id })
  .getOne();
 

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

1. я все исправил. правильный запрос: верните это.createQueryBuilder(‘страница’) .leftJoin( qb => qb.from(PageContent, ‘содержимое’) .выберите(‘MAX(«содержимое».»createdAt»)’, ‘created_at’) .addSelect («содержимое».» pageId», «идентификатор страницы») . groupBy («идентификатор страницы»), «последняя версия», «последняя версия».»идентификатор страницы» = page.id’ ) .leftJoinAndSelect(‘page.pageContents’, ‘pageContents’, ‘»pageContents».»createdAt» = «last_version».»created_at»‘) . где(‘page.id = :id’, { id: id }) .getOne();

2. вы могли бы ответить на свой собственный вопрос (вместо того, чтобы публиковать его в качестве комментария). поможет другим с теми же проблемами, и вы сможете зарабатывать повторения.