Возврат собственного объекта в распознаватель GraphQL - PullRequest
0 голосов
/ 25 октября 2019

Мне нужно предоставить пользовательский объект Object в качестве выхода для распознавателя GraphQL.

Это для внутреннего сервера Node-Express с настройкой GraphQL. Я попытался сиквелизировать, но я тестирую новый подход, где мне нужно передать объект в качестве вывода в 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;
        }
      }
    }
  }
});

результат вывода запроса

[
  {
     sampleID: 1,
     sampleText: 'sample1'
  },
  {
     sampleID: 2,
     sampleText: 'sample2'
  }
]

Когда я возвращаю простой объект, то есть ASB [0]

{
     sampleID: 1,
     sampleText: 'sample1'
}

Я получаю вывод в GraphQL, но когда возвращается весь объект ASB, я не могу получить вывод.

1 Ответ

0 голосов
/ 25 октября 2019

Проблема в том, что вы объявляете тип как отдельный элемент 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;
        }
      }
    }
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...