为什么在GraphQL游乐场/ IDE中出现“无效令牌”错误?

时间:2019-01-31 15:33:37

标签: javascript node.js express graphql graphql-js

我正在使用graphql-yoga服务器,Express,Node.js,Prisma客户端和Prisma服务器。并尝试使用GraphQL游乐场对GraphQL服务器进行后期修改。但是,我遇到了一个永久性错误“无效令牌”,该错误似乎与我在大多数Mutation字段解析器函数上调用的getUSerId帮助函数有关。

这是该错误的代码段

{
  "data": null,
  "errors": [
    {
      "message": "invalid token",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "post"
      ]
    }
  ]
}

这是utils.js中我的解析器函数的代码

const jwt = require("jsonwebtoken");
const APP_SECRET = "GraphQL-is-aw3some";

function getUserId(context) {
  const Authorization = context.request.get("Authorization");

  if (Authorization) {
    const token = Authorization.replace("Bearer", "");
    const { userId } = jwt.verify(token, APP_SECRET);
    return userId;
  }
  throw new Error("Not Authenticated");
}

module.exports = {
  APP_SECRET,
  getUserId
};

这是我的帖子解析器功能的代码

function post(parent, args, context, info) {
  const userId = getUserId(context);
  return context.prisma.createLink({
    url: args.url,
    description: args.description,
    postedBy: { connect: { id: userId } }
  });
}

这是我在操场上的突变

mutation{
  post(
    description: "Prisma repalces traditional ORMs"
    url: "www.prisma.io"
  ){
    id
  }
}

0 个答案:

没有答案