TypeError:无法读取未定义的属性'createProduct'? (来自graphqlmutation.js文件)

时间:2019-04-01 10:52:40

标签: ecmascript-6 graphql es6-promise prisma prisma-graphql

当我为面向公众的API(localhost)编写相同的查询时 我收到错误消息:

TypeError: Cannot read property 'createProduct' of undefined
    at createProduct (/Users/gavish/Desktop/Final Beta/sick-fits/backend/src/resolvers/Mutation.js:5:42)
    at field.resolve (/Users/gavish/Desktop/Final Beta/sick-fits/backend/node_modules/graphql-extensions/lib/index.js:119:77)
    at resolveFieldValueOrError (/Users/gavish/Desktop/Final Beta/sick-fits/backend/node_modules/graphql/execution/execute.js:531:18)
    at resolveField (/Users/gavish/Desktop/Final Beta/sick-fits/backend/node_modules/graphql/execution/execute.js:495:16)
    at /Users/gavish/Desktop/Final Beta/sick-fits/backend/node_modules/graphql/execution/execute.js:339:18
    at /Users/gavish/Desktop/Final Beta/sick-fits/backend/node_modules/graphql/jsutils/promiseReduce.js:25:10
    at Array.reduce (<anonymous>)
    at promiseReduce (/Users/gavish/Desktop/Final Beta/sick-fits/backend/node_modules/graphql/jsutils/promiseReduce.js:22:17)
    at executeFieldsSerially (/Users/gavish/Desktop/Final Beta/sick-fits/backend/node_modules/graphql/execution/execute.js:336:38)
    at executeOperation (/Users/gavish/Desktop/Final Beta/sick-fits/backend/node_modules/graphql/execution/execute.js:289:55)

由于我是graphql的新手,因此可以使用graphql和Prisma数据库, 当我为演示棱镜服务器编写查询和变量时,我能够查询和变异对象,但不能在我的应用程序面向公众的api的localhost端点上!

以下是我的突变文件,该文件显示错误:

const Mutations = {
    async createProduct(parent, args, ctx, info) {
        console.log('mutation started!')
        const product = await ctx.db.mutations.createProduct({
            data: {
                ...args
            }
        }, info)
        console.log('mutation done!')
        return product
    }
};

module.exports = Mutations;

这也是我的schema.graphql文件

# import * from './generated/prisma.graphql'

type Mutation {
  createProduct(
  id:ID
  name: String
  description: String
  price: Int
  colors: String
  quantity: Int ): Product!
}

type Query {
products:[Product]!
}

我认为我使用的语法有问题。 还有写突变函数的ES6格式是什么!

1 个答案:

答案 0 :(得分:2)

它是ctx.db.mutation而不是ctx.db.mutations

您可能想改用prisma-client,而不是prisma-binding,因为它更安全,以便避免此类错误。

https://www.prisma.io/docs/prisma-client/