Nuxt3---prisma

1,503 阅读1分钟

以下代码均为nuxt3项目中运行

一、初始化

依次执行

npm install prisma typescript ts-node @types/node --save-dev

tsconfig.json添加配置

{ 
    "compilerOptions": { 
        "sourceMap": true, 
        "outDir": "dist", 
        "strict": true, 
        "lib": ["esnext"], 
        "esModuleInterop": true 
      } 
 }

依次执行

npx prisma
npx prisma init

二、修改配置

  1. 将.env文件中的DATABASE_URL设置为指向现有数据库(修改.env文件中的DATABASE_URL);
  2. 修改schema.prisma文件中的datasource下的provider(有下列选项);
postgresql, mysql, sqlite, sqlserver, mongodb , cockroachdb

三、创建数据库表

这是官网的示例

model Post {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  title     String   @db.VarChar(255)
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id])
  authorId  Int
}

model Profile {
  id     Int     @id @default(autoincrement())
  bio    String?
  user   User    @relation(fields: [userId], references: [id])
  userId Int     @unique
}

model User {
  id      Int      @id @default(autoincrement())
  email   String   @unique
  name    String?
  posts   Post[]
  profile Profile?
}

向schema.prisma添加modal 执行npx prisma migrate dev --name init之后,终端会显示Your database is now in sync with your schema.

运行以下命令来检查数据库:

$npx prisma db pull

这个命令读取.env中定义的DATABASE_URL环境变量。并连接到数据库。一旦建立了连接,它就会对数据库进行内省(即读取数据库模式)。然后将数据库模式从SQL转换为Prisma数据模型

四、安装Prisma客户端

npm install @prisma/client

五、查询数据库

在server/api中新增getUserInfo.ts文件

import { PrismaClient } from "@prisma/client";

const prisma = new PrismaClient();

const getFindMany = async () => {
  return await prisma.user.findMany();
};

export default defineEventHandler(async (event) => {
  try {
    const data = await getFindMany();
    return {
      code: 200,
      data,
    };
  } catch (error) {
    console.error(error);
    return sendError(event, createError("Failed to retrieve data!"));
  }
});

页面中调用

$fetch("/api/getUserInfo", {
    method: "get",
  });

image.png