1

我在 GraphIQL 中有这个查询(注意:Graph I QL)。它给了我一条关于“连接器”的错误消息:

query ($userID: String!) {
  getUserData(id: $userID) {
    name_first
    name_last
    picture_thumbnail
    id
}
}

//query variables:
{
  "userID": "DsmkoaYPeAumREsqC"
}

GraphIQL 正在返回此响应:

{
  "data": {
    "getUserData": null
  },
  "errors": [
    {
      "message": "Connector must be a function or an class",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "getUserData"
      ]
    }
  ]
}

这是我的解析器:

getUserData(_, args) {
    debugger;  <== NEVER ACTIVATES
    return Promise.resolve()
        .then(() => {
            console.log('In getUserData');
            var Users = connectors.UserData.findAll({where: args}).then((Users) => Users.map((item) => item.dataValues));
            return Users;
        })
        .then(Users => {
            return Users;
        })
        .catch((err)=> {
            console.log(err);
        });
},

解析器中的debugger断点永远不会激活。

我还不知道 GraphIQL 的“连接器”是什么意思。需要改变什么?

4

1 回答 1

1

固定的!我必须connectors从对 的调用中删除对 的引用makeExecutableSchema,并将其添加到:

server.use('/graphql', bodyParser.json(), graphqlExpress({
    schema,
    context: {
        connectors: connectors
    }
}));

然后我可以像这样在解析器中检索它:

getUserData: (root, args, context) => {
    return Promise.resolve()
        .then(() => {
            var Users = context.connectors.UserData.findAll({where: args}).then((Users) => Users.map((item) => item.dataValues));
            return Users;
        })
        .then(Users => {
            return Users;
        })
        .catch((err)=> {
            console.log(err);
        });
},

感谢 Apollo Slack 上的 @marcusnielsen 提供的提示,帮助我找到了这个!

于 2017-08-14T16:33:17.437 回答