node.js / Prisma ORM / sqlite を試す例

2 min read読了の目安(約2200字

■ 概要:

node.js / ORM / Prisma 初級編で試したメモとなります

  • Getting started を例を試しました。

■ 環境

  • node 10
  • prisma: 2.20.0

■ 参考

https://www.prisma.io/

https://www.prisma.io/docs/getting-started/quickstart-typescript


■ 試した内容

  • 上記の curlで取得できるサンプルに、従って進めました

実行は、 yarn devで実行できました

curl -L https://pris.ly/quickstart | tar -xz --strip=2 quickstart-master/typescript/starter

npm install

  • prisma/schema.prisma ,定義やdb種類(sqlite) の設定らしいです

@relation が、FK(外部key) らしいです

datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  content   String?
  published Boolean @default(false)
  author    User?   @relation(fields: [authorId], references: [id])
  authorId  Int?
}

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


  • script.ts , userリストみたいです
script.ts
import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

// A `main` function so that you can use async/await
async function main() {
  const allUsers = await prisma.user.findMany()
  console.log(allUsers)  
}
//
main()
  .catch(e => {
    throw e
  })
  .finally(async () => {
    await prisma.$disconnect()
  })
  • script.ts , 追加の例
script.ts
async function main() {
  const post = await prisma.post.create({
    data: {
      title: 'Prisma makes databases easy',
      author: {
        connect: { email: 'sarah@prisma.io' },
      },
    },
  })
  console.log(post)
  const allUsers = await prisma.user.findMany({
    include: { posts: true },
  })
  console.dir(allUsers, { depth: null })
}

  • script.ts , updateの例
script.ts
async function main() {
  const post = await prisma.post.update({
    where: { id: 2 },
    data: { published: true },
  })
  console.log(post)
}


補足

  • npx prisma studio で、管理ツールのようで

http://localhost:5555/ で使えました