Node.js 使用Express+;从数组中获取索引;图形ql

Node.js 使用Express+;从数组中获取索引;图形ql,node.js,express,graphql,Node.js,Express,Graphql,我刚刚用Express用GraphQL弄脏了我的手。我正在跟踪调查。我刚刚建立了一个基本的GraphQL模式,其中我有返回的字符串的硬编码数组。我想创建一个查询,该查询使用GraphQL(graphiql)提供此硬编码数组中元素的索引 代码 我创建了一个查询getEventIndex(eventName:String):Int,它接受事件名称并为我提供索引(整数) 结果为graphiql 查询 query { getEventIndex(eventName: "Cooking") } 结果

我刚刚用Express用GraphQL弄脏了我的手。我正在跟踪调查。我刚刚建立了一个基本的GraphQL模式,其中我有返回的字符串的硬编码数组。我想创建一个查询,该查询使用GraphQL(
graphiql
)提供此硬编码数组中元素的索引

代码 我创建了一个查询
getEventIndex(eventName:String):Int
,它接受事件名称并为我提供索引(整数)

结果为
graphiql
查询

query {
  getEventIndex(eventName: "Cooking")
}
结果

{
  "errors": [
    {
      "message": "Cooking is not a function",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "getEventIndex"
      ]
    }
  ],
  "data": {
    "getEventIndex": null
  }
}
为什么
Cooking
在这里被视为
函数而不是
createEvent
中的参数


当然,我没有深入研究GraphQL的规范,但我想它也可能能够处理基于参数的查询。

此错误不是GraphQL特有的

期望将函数作为其第一个参数传入。为数组中的每个元素调用该函数,直到该函数返回truthy值,此时返回该元素的索引。
args.eventName
的值不是一个函数(它是一个字符串),因此最终会出现该错误

或者传递一个函数,如:

const index = _arr.findIndex(value => value === args.eventName)
或者只是使用,这可能就是你想要做的:

const index = _arr.indexOf(args.eventName)
const index = _arr.indexOf(args.eventName)