node.js/Preisma ORM/mysql의 예 시도
16348 단어 JavaScriptMySQLNode.jsormtech
요약:
이것은 이전 Prisma 초급편의 속편이다.이거 조작할 노트예요.
컨디션
참고 자료
■ 시도한 내용
mkdir hello-prisma
cd hello-prisma
npm init -y
npm install prisma --save-dev
npm install @prisma/client
npx prisma init
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
사용자 이름: Powerd@localhost: 3306/DB 이름
DB 생성 권한이 없습니다. 오류가 발생했습니다. 권한을 추가하거나 루트로 연결하면 실행할 수 있습니다.
DATABASE_URL = 'mysql://johndoe:randompassword@localhost:3306/mydb'
schema 정의
db 연결을 포함하는 파일은이하
model Post {
id Int @default(autoincrement()) @id
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 @default(autoincrement()) @id
bio String?
user User @relation(fields: [userId], references: [id])
userId Int @unique
}
model User {
id Int @default(autoincrement()) @id
email String @unique
name String?
posts Post[]
profile Profile?
}
npx prisma migrate dev --name init
동작 확인
const { PrismaClient } = require('@prisma/client')
const prisma = new PrismaClient()
async function main() {
await prisma.user.create({
data: {
name: 'Alice',
email: '[email protected]',
posts: {
create: { title: 'Hello World' },
},
profile: {
create: { bio: 'I like turtles' },
},
},
})
const allUsers = await prisma.user.findMany({
include: {
posts: true,
profile: true,
},
})
console.dir(allUsers, { depth: null })
}
main()
.catch((e) => {
throw e
})
.finally(async () => {
await prisma.$disconnect()
})
결과: node index.js에서 실행> node index.js
[ { id: 1,
email: '[email protected]',
name: 'Alice',
posts:
[ { id: 1,
createdAt: 2021-04-03T10:16:36.688Z,
updatedAt: 2021-04-03T10:16:36.688Z,
title: 'Hello World',
content: null,
published: false,
authorId: 1 } ],
profile: { id: 1, bio: 'I like turtles', userId: 1 } }
]
async function main() {
const post = await prisma.post.update({
where: { id: 1 },
data: { published: true },
})
console.log(post)
}
> node index.js
{ id: 1,
createdAt: 2021-04-03T10:16:36.688Z,
updatedAt: 2021-04-03T23:56:19.440Z,
title: 'Hello World',
content: null,
published: true,
authorId: 1 }
패키지 참조.json {
"name": "prisma-mysql",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"prisma": "^2.20.1"
},
"dependencies": {
"@prisma/client": "^2.20.1"
}
}
추기
*추기: 2021/04/06
TEXT형, String 추가db.Text, 지원
textCol String? @db.Text
https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference
추기
find/IN 실행
const posts = await prisma.temp1.findMany({
where: {
id: { in: [6, 5] },
},
select: {
name: true,
},
orderBy: [
{
id: 'desc',
},
],
})
https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#groupby
const posts = await prisma.temp1.groupBy({
by: ['name' ],
select: {
name: true,
},
sum: {
price: true,
},
})
const posts = await prisma.task.findMany({
orderBy: [
{
id: 'desc',
},
],
skip: 0,
take: 10,
})
■ 관련 페이지
Reference
이 문제에 관하여(node.js/Preisma ORM/mysql의 예 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/knaka0209/articles/0cb8d5ca97bbfc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)