#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:
, потому что он уже ищет внешний ключ