簡體   English   中英

返回自定義 object 到 GraphQL 解析器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM