Javascript TypeError:无法读取未定义的属性。Apollo服务器和Sequelize的GraphQL变异

Javascript TypeError:无法读取未定义的属性。Apollo服务器和Sequelize的GraphQL变异,javascript,graphql,sequelize.js,Javascript,Graphql,Sequelize.js,这是我第一次尝试GraphQl,我在操场上遇到了这个错误: { "errors": [ { "message": "TypeError: Cannot read property 'PaymentInfo' of undefined", "locations": [ { "line": 2, "column": 3 } ], "path": [ "c

这是我第一次尝试GraphQl,我在操场上遇到了这个错误:

{
  "errors": [
    {
      "message": "TypeError: Cannot read property 'PaymentInfo' of undefined",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "createCreditCard"
      ],
      "extensions": {
        "code": "INTERNAL_SERVER_ERROR",
        "exception": {
          "stacktrace": [
            "Error: TypeError: Cannot read property 'PaymentInfo' of undefined",
            "    at _callee3$ (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/src/resolvers/payment.js:18:23)",
            "    at tryCatch (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/regenerator-runtime/runtime.js:62:40)",
            "    at Generator.invoke [as _invoke] (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/regenerator-runtime/runtime.js:288:22)",
            "    at Generator.prototype.(anonymous function) [as next] (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/regenerator-runtime/runtime.js:114:21)",
            "    at asyncGeneratorStep (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/src/resolvers/payment.js:8:103)",
            "    at _next (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/src/resolvers/payment.js:10:194)",
            "    at /Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/src/resolvers/payment.js:10:364",
            "    at new Promise (<anonymous>)",
            "    at /Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/src/resolvers/payment.js:10:97",
            "    at createCreditCard (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/src/resolvers/payment.js:11:25)",
            "    at field.resolve (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/graphql-extensions/src/index.ts:274:18)",
            "    at resolveFieldValueOrError (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/graphql/execution/execute.js:467:18)",
            "    at resolveField (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/graphql/execution/execute.js:434:16)",
            "    at /Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/graphql/execution/execute.js:244:18",
            "    at /Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/graphql/jsutils/promiseReduce.js:23:10",
            "    at Array.reduce (<anonymous>)",
            "    at promiseReduce (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/graphql/jsutils/promiseReduce.js:20:17)",
            "    at executeFieldsSerially (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/graphql/execution/execute.js:241:37)",
            "    at executeOperation (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/graphql/execution/execute.js:219:55)",
            "    at executeImpl (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/graphql/execution/execute.js:104:14)",
            "    at Object.execute (/Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/graphql/execution/execute.js:64:35)",
            "    at /Users/milano/Documents/Projects/mtg-shop-v1/mtg-shop-server/node_modules/apollo-server-core/src/requestPipeline.ts:464:30"
          ]
        }
      }
    }
  ],
  "data": null
}
我的解析器:

    Mutation: {
        createCreditCard: async (parent, { me, models }) => {
            try {
                return await models.PaymentInfo.create({
                    paymentInfos,
                    userId: me.id,
                });
            } catch (error) {
                throw new Error(error);
            }
        },
我的模式:

    createCreditCard(
      cardNumber: Int!
      cvv: Int!
      isValid: Boolean!
    ): PaymentInfo!
    deleteCreditCard(id: ID!): Boolean!
  }
没有加起来的是,我可以通过code()使用sequelize querys创建任何东西,但当涉及到在操场上使用突变时,我就是做不到

我确信我在操场上的变异语法上犯了错误,但我不知道是什么


谢谢

您的解析程序似乎有问题。Graphql解析器被传递了四个参数-
obj、args、context和info
。我猜
{me,models}
是试图破坏您的上下文结构,但可能存在问题,因为您没有考虑或访问插入的args对象,您需要访问
createCreditCard
变量(实际上,没有看到paymentInfos的定义位置)。或许可以尝试以下方法:

   Mutation: {
        createCreditCard: async (parent, args, { me, models }) => {
            try {
                const paymentInfos = { ...args };
                console.log(paymentInfos); // confirm you are passing object of correct shape to db
                return await models.PaymentInfo.create({
                    paymentInfos,
                    userId: me.id,
                });
            } catch (error) {
                throw new Error(error);
            }
        },
   Mutation: {
        createCreditCard: async (parent, args, { me, models }) => {
            try {
                const paymentInfos = { ...args };
                console.log(paymentInfos); // confirm you are passing object of correct shape to db
                return await models.PaymentInfo.create({
                    paymentInfos,
                    userId: me.id,
                });
            } catch (error) {
                throw new Error(error);
            }
        },