Создайте последовательный запрос, несколько внутренних соединений и мест в нескольких таблицах

#javascript #mysql #node.js #sequelize.js

Вопрос:

Я создал успешный запрос mysql, который соединяет 2 таблицы, имеющие внешние ключи друг к другу. У меня есть почти все, чтобы работать в последовательности, кроме привязки пользователя к ответам. Мой запрос делает это успешно, но я не могу понять, как его получить.

Это мой запрос mysql, который работает специально, получает «пользователей» с тем же идентификатором, что и ответ «идентификатор пользователя».

 SELECT *
FROM meetup_db.posts p
INNER JOIN meetup_db.responses r
INNER JOIN meetup_db.users u
WHERE p.id = r.post_id AND
r.user_id = u.id
 

Это мой запрос sequelize, который почти работает, но не возвращает мне пользователя в каждом ответе, где user_id = идентификатор

 const dbPostData = await Posts.findOne({
    where: { id: req.params.id },
    include: [
        { model: Users },
        {
            model: Responses,
            include: {
                model: Users,
                where: { id: Responses.user_id }, //this is the line in question i need the user that has the same id as the Response.user_id
            }
        }
    ]
});
 

Последовательность правильно выводит все, кроме пользователя, вот пример вывода, как вы можете видеть, в ответе есть пользователи, перечисленные внутри, но пользователи просто отображаются как [Объект]

 {
  id: 1,
  title: 'BBQ At My House!!',
  description: 'Hey gang! Im having a BBQ at my house! I hope all can attend!!',
  upvotes: 44,
  location: '2113 Main St. Austin, TX.',
  date_occuring: 2021-08-04T18:00:00.000Z,
  created_at: 2021-08-06T04:42:01.000Z,
  edited: false,
  user_id: 1,
  createdAt: 2021-08-06T04:42:01.000Z,
  updatedAt: 2021-08-06T04:42:01.000Z,
  User: {
    id: 1,
    username: 'Jennifer Wylan',
    email: 'jwylan@gmail.com',
    password: 'ewfchijwnsj',
    image_url: '/assets/fake-pfp/fakeperson1.png'
  },
  Responses: [
    {
      id: 4,
      response: 'Im in there like swimwear!',
      user_id: 4,
      post_id: 1,
      createdAt: 2021-08-06T04:42:01.000Z,
      updatedAt: 2021-08-06T04:42:01.000Z,
      User: [Object] //these lines right here need to look like the above User: {} Object
    },
    {
      id: 5,
      response: 'weeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
      user_id: 1,
      post_id: 1,
      createdAt: 2021-08-06T04:42:01.000Z,
      updatedAt: 2021-08-06T04:42:01.000Z,
      User: [Object] //these lines right here need to look like the above User: {} Object
    }
  ],
}
 

Ответ №1:

Я все понял. Так что это уже сработало. В моем терминале вывод ответов показывал пользовательский ключ как [Объект] … Оказывается, когда его глубина составляет 3 таблицы, терминал просто показывает [объект], но на самом деле он уже был там, вам также не нужен where: , потому что он уже ищет внешний ключ