![](/img/trans.png)
[英]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.