Я пытаюсь получить вложенный запрос из postgres в узле с pg-обещанием.
Мне удалось получить только простой не вложенный результат со смешанными данными из таблиц.
Я хочу получитьиз трех таблиц (пользователи, сообщения, комментарии) по одному набору данных для каждого сообщения - users.username, posts.text, post.timestamp, comments.author, comments.text, comments.timestamp.Пользователи и сообщения связаны с именем пользователя, сообщения и комментарии связаны с posts.id и comments.parrent.
Это данные, которые я хочу получить:
[
{"username": "jane",
"postText": "Hello",
"postId": 4,
"postTimestamp: "1651156414",
allComments: [
{"commentsId": 2,
"commentsAuthor": "john",
"commentsText": "nice",
"commentsTimestamp": "156454565456"
},
{"commentsId": 3,
"commentsAuthor": "ghost",
"commentsText": "hiii",
"commentsTimestamp": "165165848"}]
}]
Я делаю это сpg-обещание:
function getUsers(t) {
return t.map('SELECT * FROM posts', post=> {
return t.map('SELECT * FROM users WHERE users.username = post.username', post.id, user => {
return t.any('SELECT * FROM comments, posts WHERE comments.parrent = post.id', user.id)
.then(comment => {
user.comment = comment;
return user;
});
})
.then(t.batch)
.then(user=> {
post.user = user;
return post;
});
}).then(t.batch);
}
db.task(getUsers)
.then(data => {
console.log(data)
res.send(data)
})
.catch(error => {
console.log(error)
});
});
Это дает мне ошибку:
TypeError: undefined is not a function at Array.map (<anonymous>) at obj.any.call.then.data
У вас есть, пожалуйста, какие-либо идеи, что я делаю не так?Спасибо