【发布时间】:2019-01-12 12:48:51
【问题描述】:
我有两个表类别和子类别定义为
CREATE TABLE `categories` (
`id` int(11) NOT NULL,
`name` varchar(300) DEFAULT NULL,
`image` varchar(300) DEFAULT NULL
);
与
CREATE TABLE `sub_categories` (
`id` int(11) NOT NULL,
`name` varchar(45) DEFAULT NULL,
`cat` int(11) DEFAULT NULL,
`type` int(11) NOT NULL,
)
这里 sub_categories 表中的 cat 字段是 categories 表中 id 的外键
GraphQL 架构定义为
export const schema = `
type Category {
id: ID
name: String
image: String
subcategories : [SubCategory]
}`
与
type SubCategory {
id: ID
name: String
cat: Int
type: Int
}
我在 Bookshelf.js 中的数据库模型也是
const Category = db.Model.extend({
tableName: 'categories',
subcats: function () {
return this.hasMany(SubCategory,"cat");
}
})
我的 GraphQL 查询如下
async getAllCategories() {
const allCats = await Category
.fetchAll()
.then(cats => {
return cats.toJSON()
})
return allCats
}
现在当我打电话时
{
getAllCategories {
id
name
subcategories {
id
name
}
}
}
我得到了回应
{
"data": {
"getAllCategories": [
{
"id": "1",
"name": "usa",
"subcategories": null
},
{
"id": "2",
"name": "japan",
"subcategories": null
},
]
}
}
这里的 subcategories 字段为空,因为我想获取特定类别中的所有子类别,这些子类别通过 sub_categories 表中的外键 cat 连接。
【问题讨论】:
-
您是如何让 Bookshelf 与 GraphQL 一起工作的?
-
嗨,我关注了this guide
标签: graphql knex.js bookshelf.js