我有两个表类别和子类别定义为
CREATE TABLE `categories` (
`id` int(11) NOT NULL,
`name` varchar(300) DEFAULT NULL,
`image` varchar(300) DEFAULT NULL
);
AND
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]
}`
AND
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
},
]
}
}
这里的子类别字段为null,在这里我想获取由sub_categories表中的外键猫连接的特定类别中的所有子类别。
答案 0 :(得分:0)
由于它不是自动的,因此您必须急于加载子类别:
const allCats = await Category
.fetchAll({withRelated: 'subcats'})
.then(cats => {
return cats.toJSON()
})