我们将使用什么
表达
这是一家Nodejs书店,它使超级简单的REST服务器。卡车,它使我们能够做出想要的选择,对于那些想学习节点的人来说,这是一个很好的出发点。
一个ORM
,我只是只列出球的SQL请求,而只是向我的ORM订购东西,然后将我能在SQL请求中转换为可以的。 p>
永远不会再喊出这种东西:
SELECT *
FROM table
WHERE condition
GROUP BY expression
HAVING condition
{ UNION | INTERSECT | EXCEPT }
ORDER BY expression
LIMIT count
OFFSET start
Prisma
说到ORM,Prisma是最现代和易于使用的Prisma之一。它提供了模式的决定(我的用户,我的汽车...等的嘴巴)直觉。
他扮演迁移,这将我的图表猛击在基础上而不是所需的SQL请求。
JSON网络令牌
jwt是猜测身份验证的一种方式,这是今天使用的最多的,因为由于像我这样的无聊阵线,我们在额头和背面之间有一个序列(两个休息,不同的服务器)突然突然使用了更多的问题曲奇饼。基本上,我们通过一个代码(一种代码)(眨眼都可以识别我的服务器)。
这是一个神秘的句子,背部将能够加密,并且客户可以通过谨慎地保存永远不要向任何人展示,至少只要有效。
项目初始化
在我的终端中:
mkdir levideur # Parce que je vais ce que je veux
cd levideur
我们初始化标准类型项目(因为打字稿很好)
npm init -y
npm install typescript ts-node @types/node --save-dev
必须添加此文件,还必须tsconfig.json
:
{
"compilerOptions": {
"sourceMap": true,
"outDir": "dist",
"strict": true,
"lib": ["esnext"],
"esModuleInterop": true
}
}
现在,我可以安装prisma
:
npm install prisma --save-dev
我们可以亲密的Prisma:
npx prisma init --datasource-provider sqlite
我采用SQLITE漫画,因为它在设置中更快地安装了任何东西,但仍然是SQL。
MON PREMIER模式
图是拒绝给定的口的一种方法。
在prisma/schema.prisma
文件中,我补充说:
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
}
既然我已经伸展了基地的桌子,我准备在给定的Abse中猛烈抨击此信息:
npx prisma migrate dev --name init
很好!我们准备好使用我们的基础。
我相信一个main.ts
文件:
// main.ts
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function main() {
const user = await prisma.user.create({
data: {
name: 'Alice',
email: 'alice@prisma.io',
},
})
console.log(user)
}
main()
.then(async () => {
await prisma.$disconnect()
})
.catch(async (e) => {
console.error(e)
await prisma.$disconnect()
process.exit(1)
})
在我的航站楼中,一切都起作用:
npx ts-node main.ts
镍! ð¥
代码在这里:Repo du videur
放置服务器
在我的终端中:
npm i express jsonwebtoken cors
npm i -D morgan
- CORS :允许服务器为Hée的域外呼叫。
- Morgan :倒入LES日志
import express from "express"
import morgan from "morgan"
import cors from "cors"
import { PrismaClient } from "@prisma/client"
const PORT = 1234
// Initialisation de Express 4
const app = express()
// Activation de CORS pour les CORS...
app.use(cors())
// Activation de Morgan pour les logs
app.use(morgan("tiny"))
// Activation du raw (json)
app.use(express.json())
// Activation de x-wwww-form-urlencoded
app.use(express.urlencoded({ extended: true }))
// Initialisation du client Prisma
const prisma = new PrismaClient()
// Requete GET /
app.get("/", async (req, res) => {
const users = await prisma.user.findMany()
res.send(users)
})
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}.`)
})
我突然启动服务器;
npx ts-node main.ts
我访问(http://localhost:1234/),很好: