[英]Apollo Server Express + GraphQL relationships
我正在使用Express + Apollo Server + GraphQL + Mongoose + MongoDB來“執行”數據庫上的多個CRUD操作。
我要進行的操作之一是從數據庫中獲取站點,並使用每個記錄的信息擴展其用戶,如下所示:
query {
getSites {
id
name
owner {
name
email
}
origins
}
}
相反,我得到了以下結果:
{
"data": {
"getSites": [{
"id": "5cae36182ab9b94e94ba9af5",
"name": "Test site 1",
"owner": [{
"name": null,
"email": null
}
],
"origins": [
"test1",
"test2"
]
}, {
"id": "5cae3a3798c302247c036544",
"name": "Test site 2",
"owner": [{
"name": null,
"email": null
}
],
"origins": [
"test1",
"test2"
]
}
]
}
}
這是我的Site的 typeDef代碼:
import { gql } from 'apollo-server-express';
const site = gql `
extend type Site {
id: ID!
name: String!
origins: [String]
owner: [User]
createdOn: String
updatedOn: String
}
extend type Query {
getSites: [Site]
getSite(id: ID!): Site
}
extend type Mutation {
addSite(name: String!, owner: [String!], origins: [String]): Site
}
`;
export default site;
如果我console.log(sites)
我看到所有者是一個字符串數組。
編輯 :
如果我更改addSite(name: String!, owner: [User], origins: [String]): Site
則在編譯時會得到:
錯誤:Mutation.addSite(owner :)的類型必須為Input Type,但得到:[User]
我的解析器如下所示:
getSites: async () => await Site.find().exec()
今天定義關系的正確方法是什么? 謝謝。
我剛剛將解析器修改為此:
getSites: async () => {
let sites = await Site.find().exec();
let ownedSites = await User.populate(sites, { path: 'owner' });
return ownedSites;
}
這就解決了錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.