[英]AuthenticationController always throws error, TypeError: Cannot read property 'create' of undefined
[英]Prisma throws an error "TypeError: cannot read property findmany of undefined"
我想制作一个聊天应用程序来练习使用 graphql 和节点,对于我使用 prisma 的数据库。 我正在做本教程中的所有事情。
https://www.howtographql.com/graphql-js/0-introduction/
我只是更改了变量名。
所以我有这段代码
const { PrismaClient } = require('@prisma/client')
const prisma = new PrismaClient()
const resolvers = {
Query: {
history: async (parent, args, context) => {
return context.prisma.Messages.findMany()
},
},
Mutation: {
post: (parent, args, context) => {
const newMessage = context.prisma.Messages.create({
data: {
username: args.username,
message: args.message,
},
})
return newMessage
},
},
}
const server = new GraphQLServer({
typeDefs: './src/schema.graphql',
resolvers,
context: {
prisma,
}
})
server.start(() => console.log(`Server is running on http://localhost:4000`))
作为我的 index.js
这是我的 schema.prisma
provider = "sqlite"
url = "file:./dev.db"
}
generator client {
provider = "prisma-client-js"
}
model Message {
id Int @id @default(autoincrement())
sendedAt DateTime @default(now())
message String
username String
}
脚本.js
const { PrismaClient } = require("@prisma/client")
const prisma = new PrismaClient()
async function main() {
const newMessage = await prisma.Messages.create({
data: {
message: 'Fullstack tutorial for GraphQL',
username: 'www.howtographql.com',
},
})
const allMessages = await prisma.Messages.findMany()
console.log(allMessages)
}
main()
.catch(e => {
throw e
})
// 5
.finally(async () => {
await prisma.disconnect()
})
和架构.graphql
type Query {
history: [Message!]!
}
type Mutation {
post(username: String!, message: String!): Message!
}
type Message {
id: ID!
message: String!
username: String!
}
这就是我在操场上得到的
"data": null,
"errors": [
{
"message": "Cannot read property 'findMany' of undefined",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"history"
]
}
]
}
请帮忙
应该注意它实际上不是小写而是驼峰式。
示例:
Model 名称: Message
-> Prisma 客户端名称: message
Model 名称: MessagePerUser
-> Prisma 客户端名称: messagePerUser
我设法解决了这个问题。 实际上,我所需要的只是使用与 schema.prisma 相同但小写的名称
想补充一下答案
基本上,在调用 await prisma.User.create时,prisma 允许用户 model 大写,但在调用其他模型(如prisma.messages.create)时,m 必须为小写。 本质上,对于所有 prisma 调用,模型应该是小写的。 希望这能回答您的问题,prisma 不会将此错误标记出来
在 prisma Client 中使用表名作为 camelCase 进行查询
例子:表名是: StudentData
然后根据表名 prisma 使用 camelCase。 studentData
();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.