在我部署的 Node REST API 服务中,当我尝试连接一个特定表(而不是其他表)时,我看到一个无用的错误。错误显示“TypeError:无法读取未定义的属性(读取'findMany')”
正如我所说,我可以毫无问题地读取和写入其他表。当我在本地运行 api 时,我可以读取和写入有问题的表 (UserFavorite)。我正在本地和从我部署的 api 连接到数据库的同一实例。
我对这两个表的查询几乎相同。我在这里缺少什么?下面粘贴了架构和查询。
架构:
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
createdAt DateTime @default(now()) @map("created_at")
clerkId String @unique @map("clerk_id")
userFavorites UserFavorite[]
@@map("user")
}
model UserFavorite {
id Int @id @default(autoincrement())
createdAt DateTime @default(now()) @map("created_at")
articleId String @map("article_id")
user User @relation(fields: [userId], references: [id])
userId Int @map("user_id")
@@unique([articleId, userId])
@@index([slug, userId(sort: Asc)])
@@map("user_favorite")
}
服务:
const prisma = new PrismaClient();
export async function getUserByClerkId(clerkId: string) {
try {
const user = await prisma.user.findUnique({
where: { clerkId }
});
return user;
} catch (err) {
console.error('Error getting user', err);
throw err;
}
}
export async function getUserFavorites(userId: number) {
try {
const favs = await prisma.userFavorite.findMany({
where: {
userId,
}
});
return favs;
} catch (err) {
console.error('Error getting user favorites', err);
throw err;
}
}
这个问题是在我重命名UserFavorite表后出现的。起初它似乎试图连接到旧的表名。从那时起,我:
prisma format
呵呵。看起来我应该能够在我的模式中拥有一个 PascalCase 实体,在我的数据库中重命名为一个 Snake_case 表名,并在代码中作为 prisma.entityName 进行访问。我不确定为什么这不起作用,但我发现的解决方法是将表重命名为
favorites
这样我就不必担心大小写问题。
哦,我还在我的 package.json 中添加了一个安装后脚本,因此这可能是修复它的原因: