【发布时间】:2020-07-30 09:55:51
【问题描述】:
我在使用 node 和 knex.js 时遇到问题
我正在尝试构建一个迷你博客,其中包含帖子和添加功能以添加多个标签来发布
我有一个具有以下属性的 POST 模型:
id SERIAL PRIMARY KEY NOT NULL,
name TEXT,
其次,我有 标签模型 用于存储标签:
id SERIAL PRIMARY KEY NOT NULL,
name TEXT
我有许多表:发布标签,它引用了帖子和标签:
id SERIAL PRIMARY KEY NOT NULL,
post_id INTEGER NOT NULL REFERENCES posts ON DELETE CASCADE,
tag_id INTEGER NOT NULL REFERENCES tags ON DELETE CASCADE
我已经设法插入标签,并创建带有标签的帖子, 但是,当我想获取带有附加到该帖子的标签的帖子数据时,我遇到了麻烦
这里有个问题:
const data = await knex.select('posts.name as postName', 'tags.name as tagName'
.from('posts')
.leftJoin('post_tags', 'posts.id', 'post_tags.post_id')
.leftJoin('tags', 'tags.id', 'post_tags.tag_id')
.where('posts.id', id)
以下查询返回此结果:
[
{
postName: 'Post 1',
tagName: 'Youtube',
},
{
postName: 'Post 1',
tagName: 'Funny',
}
]
但我希望像这样格式化和返回结果:
{
postName: 'Post 1',
tagName: ['Youtube', 'Funny'],
}
这甚至可以通过查询还是我必须手动格式化数据?
【问题讨论】:
标签: node.js postgresql knex.js