Запрашиваемая модель запросов на связывание - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь сделать простую findAll операцию над моей Statue таблицей. Однако операция findAll также просматривает все связанные модели, что НЕ является моим предполагаемым поведением.

Моя модель ассоциации статуй настроена как,

statue.associate = function(models) {
  const { comment, image, like } = models;

  statue.hasMany(comment, {
    foreignKey: 'model_id',
    constraints: false,
    scope: {
      model_name: 'statue'
    }
  });

  statue.hasMany(image, {
    foreignKey: 'model_id',
    constraints: false,
    scope: {
      model_name: 'statue'
    }
  });

  statue.hasMany(like, {
    foreignKey: 'model_id',
    constraints: false,
    scope: {
      model_name: 'statue'
    }
  });
};

Когда я бегу:

const statues = await Statue.findAll();

Возвращаю нужный мне объект статуи и вижу вывод этой командной строки postgres, как и предполагалось.

SELECT "id", "title", "artist_desc", "artist_name", "artist_url", "statue_desc", "location", "created_at", "updated_at" FROM "statues" AS "statue";  

Но я также вижу,

SELECT "id", "user_id", "text", "model_name", "model_id", "created_at", "updated_at" FROM "comments" AS "comment" WHERE "comment"."model_name" = 'statue' AND "comment"."model_id" = 1;
SELECT "id", "model_name", "model_id", "url", "height", "width", "created_at", "updated_at" FROM "images" AS "image" WHERE "image"."model_name" = 'statue' AND "image"."model_id" = 1;
SELECT "id", "user_id", "model_name", "model_id", "created_at", "updated_at" FROM "likes" AS "like" WHERE "like"."model_name" = 'statue' AND "like"."model_id" = 1;

, которые являются родственными моделями, но затем вывод, который я получаю с

return res.json(statues);

- это {}.

Любое направление было бы чрезвычайно полезно. Я чрезвычайно новичок в postgres & express.

Чтобы добавить, я хочу, чтобы все эти связанные модели были в ответном ответе, но в настоящее время даже ответ модели статуи проглатывается ...

1 Ответ

0 голосов
/ 03 июля 2018

Чтобы включить связанные модели, вы можете использовать нетерпеливая загрузка

const statues = await Statue.findAll({include: [image]});

Вы также можете включить все связанные модели, не указав их отдельно

Statue.findAll({ include: [{ all: true }]});

С точки зрения вывода, запишите значение statues, а также проверьте, есть ли значения в БД.

...