[英]How to architect array of promises in GraphQL resolver with multiple API calls to return a single object type list
[英]Return custom object to GraphQL resolver
我需要提供自定義 Object 作為 GraphQL 解析器的輸出。
這適用於具有 GraphQL 設置的 Node-Express 后端服務器。 我嘗試了續集,但我正在測試一種新方法,我需要將 object 作為 output 傳遞給 graphQL。
const RootQueryType = new GraphQLObjectType({
name: "Query",
fields: {
Sample: {
type: SampleType,
args: {
sampleID: { type: GraphQLID }
},
resolve: async (parent, args) => {
try {
const result = await sql.connect(config).then(pool =>
pool
.request()
.input("sampleID", sql.Int, args.sampleID)
.query(
"SELECT * FROM samples WHERE sampleID = @sampleID"
)
);
const ASB = await result.recordsets[0];
console.log(ASB);
sql.close();
return ASB;
} catch (err) {
console.log(err);
sql.close();
return;
}
}
}
}
});
查詢 output 的結果是
[
{
sampleID: 1,
sampleText: 'sample1'
},
{
sampleID: 2,
sampleText: 'sample2'
}
]
當我返回普通 object 即 ASB[0]
{
sampleID: 1,
sampleText: 'sample1'
}
我在 GraphQL 中得到 output 但是當返回整個 ASB object 時,我無法獲得輸出。
問題是您將類型聲明為單項SampleType
但返回SampleType
數組
您可以通過將SampleType
更改為new GraphQLList(SampleType)
來修復它
const RootQueryType = new GraphQLObjectType({
name: "Query",
fields: {
Sample: {
type: new GraphQLList(SampleType), // THIS LINE !!!
args: {
sampleID: { type: GraphQLID }
},
resolve: async (parent, args) => {
try {
const result = await sql.connect(config).then(pool =>
pool
.request()
.input("sampleID", sql.Int, args.sampleID)
.query(
"SELECT * FROM samples WHERE sampleID = @sampleID"
)
);
const ASB = await result.recordsets[0];
console.log(ASB);
sql.close();
return ASB;
} catch (err) {
console.log(err);
sql.close();
return;
}
}
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.