Nodejs Sequelize найти с ассоциацией

A.js:

A.associate = models => {
 A.hasMany(models.B, { foreignKey: 'A_id' });
 A.hasMany(models.C, { foreignKey: 'A_id' });
 A.hasMany(models.D, { foreignKey: 'A_id' });
};

A.findOne({
 where: { id: _id },
 include: [ B, C, D ],
});

B.js:

B.associate = models => {
 B.belongsTo(models.A, { foreignKey: 'A_id' });
};

C.js:

C.associate = models => {
 C.belongsTo(models.A, { foreignKey: 'A_id' });
};

D.js:

D.associate = models => {
 D.belongsTo(models.A, { foreignKey: 'A_id' });
};

БД:

A TABLE
 id:1 name: A
B TABLE
 A_id:1 name: B1
 A_id:1 name: B2
blabla...

Результат A :: findOne:

A
 id:1 blabla...
B
 A_id:1 name: B1
 A_id:1 name: B2 -> NO FIND B2

Я хочу искать «одну запись A» и «несколько записей B, C, D». Как я могу это сделать? Ассоциация в Продолжить так сбивает с толку.

Любая помощь приветствуется!

@@@@@Источник

маршруты / A.js

router.get('/:id', (req, res) => {
  const { A } = require('../models');
  A.getById(req.params.id)
    .then(record => {
      console.info(record[0].Bs);
    });
});

модели / A.js

A.associate = models => {
    A.belongsTo(models.User, {foreignKey: 'userId'});
    A.hasMany(models.B, {foreignKey: 'A_Id'});
    A.hasMany(models.C, {foreignKey: 'A_Id'});
  };

  A.getById = _id => {
    const { B, C } = require('../models');
    return A.findAll({
      where: { id: _id },
      include: [ B, C ],
    });
  };

модели / B.js

B.associate = models => {
    B.belongsTo(models.A, { foreignKey: 'A_Id' });
  };

выполненный запрос

SELECT `A`.`id`, `A`.`userId`, `A`.`name`,
`Bs`.`A_Id` AS `Bs.A_Id`, `Bs`.`name` AS `Bs.name`,
`Cs`.`A_Id` AS `Cs.A_Id`, `Cs`.`name` AS `Cs.name`
FROM `As` AS `A`
LEFT OUTER JOIN `Bs` AS `Bs` ON `A`.`id` = `Bs`.`A_Id`
LEFT OUTER JOIN `Cs` AS `Cs` ON `A`.`id` = `Cs`.`A_Id`
WHERE `A`.`id` = '1'

войти в routes / A.js

[ B {
  dataValues: { A_Id: 1, name: 'Name1' },
  _previousDataValues: ...
  ...
} ]

Но результаты выполнения запроса - это несколько строк. (в клиентской программе БД)

Вы пробовали делать запросы с findAll()? Если у вас есть только одна запись в A, он вернет эту единственную запись ... и все остальные записи из B, C и D

Mike K 01.08.2018 16:17

@legoMyEgo да, пробовал. Но результаты такие же. одиночный A, одиночный B, C, D.

양정훈 01.08.2018 16:26

Какой точный код выполняет ваш запрос? Добавьте это к вопросу

Mike K 01.08.2018 17:08

@legoMyEgo спасибо за комментарий. Я добавил свой источник. пожалуйста, проверьте мой источник. Я не могу решить эту проблему.

양정훈 02.08.2018 04:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
314
0

Другие вопросы по теме