除了最上層會是建議query外 其他子結點都會是一個個的物件類型
query與物件的定義差別是
物件下並不會定義type而是有fields 來定義這個物件下包含的多個field定義
query下就會直接定義type 不會有fields的定義
多層次巢狀的物件結構 真正的資料操作可能只在某一層
但要注意的是 在巢狀結構下
上層的物件無論是否有作用 resolve一定要return
下層的物件才會被執行resolve
假設希望設計一隻通用的查詢功能
可以指定db主機,指定db,指定table做通用查詢的功能
1. table物件
fields即是完全對應到db table欄位
tableObject {
name: table名稱,
fields: [
{
name: 欄位名稱1,
type: String|.. 對應欄位本身columnType
}..
]
}
2. db物件:
fields對應到db內所有的table
查詢取到的list 內容每一筆資料內容即是tableObj所定義的欄位
所以這裏的type會是tableObject 的list
這裏的resolve是真正執行db操作的地方
DbObject {
name: db名稱
fields: [
{
name: tableName,
type: [tableObject]
resolve:() => {
真正執行的地方在這裡
}
}
]
}
3. host主機物件
fields內對應到主機內所有的db
每個field都是對應到一台db,所以類型會是dbType
HostObject {
name: db名稱
fields: [
{
name: dbName,
type: DbObject,
resolve: async(parent, args, context, info) => {
// 這裡不需要做處理 但一定要回傳
return true
}
}
]
}
4.建立查詢
查詢即是這個程式的進入點type是主機物件
resolve沒有作用但必須要有return 才會往下解析
mainQuery {
name: host,
type: HostObject,
resolve: () => {
return true
}
}
沒有留言:
張貼留言