"ctx.prisma.status 不是函数"错误,即使它已定义



我正在使用入门指南的"构建应用程序"中的设置,尽管在目录结构方面略有修改。

尝试对 localhost:4444 上的 graphql-yoga 操场运行基本查询时,我收到以下错误。

您可以看到status是在架构上定义的,那么为什么这不起作用呢?

我什至很难在 localhost:4466/_admin 上插入数据,除非通过示例脚本自动生成的突变const testing = await prisma.createcnStatus({ ticker: 'XXX' })完成,否则无法直接插入数据,这工作正常。

查询

query {
  status {
    ticker
  }
}

错误

  "data": {
    "status": null
  },
  "errors": [
    {
      "message": "ctx.prisma.status is not a function",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "status"
      ]
    }
  ]
}

app.js

require('./lib/main')

/lib/main.js

const { prisma } = require('./generated/prisma-client')
const { GraphQLServer, PubSub } = require('graphql-yoga')
const resolvers = require('./resolver')
const fs = require('fs')
const pubsub = new PubSub()
const server = new GraphQLServer({
  typeDefs: './lib/schema.graphql',
  resolvers,
  context: {
    prisma,
    pubsub
  }
})
let port = 4444
server.start({
    port: port,
  },
  () => console.log('Server is running on http://localhost:' + port)
)

/lib/resolver.js

const resolvers = {
  Query: {
    status(parent, args, ctx, info) {
      return ctx.prisma.status()
    }
  }
}
module.exports = resolvers

/lib/schema.graphql

type Query {
  status: [cnStatus]
}
type cnStatus {
  ticker: String
}

datamodel.prisma

type cnStatus {
  id: ID! @id
  ticker: String
}

根据您提供的数据模型,Prisma 将为 CRUD 操作生成客户端。

由于它是根据类型名称生成的,因此它应该是类似于以下内容:

ctx.prisma.cnStatus()

shoule be ctx.prisma.cnStatus(( here

const resolvers = {
  Query: {
    status(parent, args, ctx, info) {
      return ctx.prisma.status()
    }
  }
}

并且您需要架构中的数组,但在查询解析程序中返回实例

type Query {
  status: [cnStatus]
}

最新更新