返回带有节点和graphql的字符串数组

时间:2020-05-10 15:31:48

标签: javascript graphql graphql-js express-graphql

我正在使用node和graphql来获取特定键的值(字符串数组)。以下是正在使用的架构

var schema = buildSchema(`
    type Query {
        keyValue(id: String!): KeyValue
    },
    type KeyValue {
      value: [String]
    }
`);

var tempArray = [{
   id:"1",
   value: ["ABC", "CDE", "1JUU", "CDE"]
},{
   id:"2",
   value: ["ABC", "CDE", "2JUU", "CDE"]
}];

var keyValueData = (args) => {
  var id = args.id;
  var result = null;
  for (let key of tempArray) {
    if (key.id === id) {
      result = key.value;
      break;
    }
  }
  console.log(result); // I see the result in the console as ["ABC", "CDE", "1JUU", "CDE"] when I send id as 1 from client
  return result;
}

var root = {
    keyValue: keyValueData
};

var app = express();
app.use('/graphql', express_graphql({
    schema: schema,
    rootValue: root,
    graphiql: true
}));
app.listen(4010, () => console.log('Running On localhost:4010/graphql'));

我从客户端发送:

{
  keyValue(id: "1") {
    value
  }
}

但是它总是为空

{
  "data": {
    "keyValue": {
      "value": null
    }
  }
}

有人可以帮助我在这里我所缺少或做错的事吗?

1 个答案:

答案 0 :(得分:0)

您的keyValue查询的返回类型为KeyValue

KeyValue被声明为具有value类型的字段[String]

因此,keyValueData应该返回类型为KeyValue而不是[String]的结果。

您应该从return result更改为

return { value: result }
相关问题