GraphQL Prisma TypeScript 项目教程

GraphQL Prisma TypeScript 项目教程

graphql-prisma-typescript 🏡 GraphQL server reference implementation (Airbnb clone) in Typescript using Prisma & graphql-yoga graphql-prisma-typescript 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-prisma-typescript

1. 项目的目录结构及介绍

graphql-prisma-typescript/
├── prisma/
│   ├── schema.prisma
│   └── migrations/
├── src/
│   ├── index.ts
│   ├── resolvers/
│   │   ├── Query.ts
│   │   └── Mutation.ts
│   ├── types/
│   │   └── index.ts
│   └── utils/
│       └── index.ts
├── .env
├── .gitignore
├── package.json
├── tsconfig.json
└── README.md

目录结构介绍

  • prisma/: 包含 Prisma 的配置文件和迁移脚本。

    • schema.prisma: Prisma 的数据库模式定义文件。
    • migrations/: 包含数据库迁移脚本。
  • src/: 项目的源代码目录。

    • index.ts: 项目的入口文件。
    • resolvers/: 包含 GraphQL 解析器的实现。
      • Query.ts: 定义查询操作的解析器。
      • Mutation.ts: 定义变更操作的解析器。
    • types/: 包含 TypeScript 类型定义。
    • utils/: 包含项目中使用的工具函数。
  • .env: 环境变量配置文件。

  • .gitignore: Git 忽略文件配置。

  • package.json: 项目的依赖和脚本配置。

  • tsconfig.json: TypeScript 配置文件。

  • README.md: 项目的说明文档。

2. 项目的启动文件介绍

src/index.ts

import { ApolloServer } from 'apollo-server';
import { PrismaClient } from '@prisma/client';
import { typeDefs } from './types';
import { resolvers } from './resolvers';

const prisma = new PrismaClient();

const server = new ApolloServer({
  typeDefs,
  resolvers,
  context: { prisma },
});

server.listen().then(({ url }) => {
  console.log(`🚀 Server ready at ${url}`);
});

启动文件介绍

  • ApolloServer: 使用 apollo-server 创建 GraphQL 服务器。
  • PrismaClient: 初始化 Prisma 客户端,用于数据库操作。
  • typeDefs: 导入 GraphQL 类型定义。
  • resolvers: 导入 GraphQL 解析器。
  • context: 将 Prisma 客户端传递给解析器上下文。
  • server.listen(): 启动服务器并输出服务器地址。

3. 项目的配置文件介绍

.env

DATABASE_URL="postgresql://user:password@localhost:5432/mydb?schema=public"

配置文件介绍

  • DATABASE_URL: 数据库连接字符串,用于 Prisma 连接数据库。

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "outDir": "./dist"
  },
  "include": ["src/**/*"]
}

TypeScript 配置文件介绍

  • target: 指定编译目标为 ES5。
  • module: 使用 CommonJS 模块系统。
  • strict: 启用所有严格类型检查选项。
  • esModuleInterop: 启用 ES 模块互操作性。
  • skipLibCheck: 跳过库文件的类型检查。
  • forceConsistentCasingInFileNames: 强制文件名大小写一致。
  • outDir: 指定编译输出目录为 dist
  • include: 指定包含的源文件路径。

graphql-prisma-typescript 🏡 GraphQL server reference implementation (Airbnb clone) in Typescript using Prisma & graphql-yoga graphql-prisma-typescript 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-prisma-typescript

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喻季福

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值