GraphQL素材中台的上传

GraphQL素材中台的上传

主要代码在外网还未脱敏,暂时不展示

同时基于material这个集合的增删改查都有demo

技术:nest+graphql+mongoose

使用nest代码优先方法,定义typescript classes,他会自动生成schema

定义mongo模型

连接数据库

这里新创建了一个本地的数据库middle

1
2
3
4
5
6
7
// app.module.ts
@Module({
imports: [
...
MongooseModule.forRoot('mongodb://localhost:27017/middle'),
]
...

数据库生成mongoose schema,nest带有@Schema()装饰器写在类声明前面,还有一些graphql的装饰器,以便生成 graphQL schemas

nest_gql_upload\src\mongo\material.model.ts

1
2
3
4
5
6
7
8
9
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'
import { Field, ObjectType } from '@nestjs/graphql'

@ObjectType()
@Schema()
export class Material {
@Field(() => String)
_id: MongooseSchema.Types.ObjectId
...

然后在module里面引入

1
2
3
4
5
6
7
8
9
10
11
// person.module.ts

import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { Material, MaterialSchema } from './Material.model';

@Module({
imports: [
MongooseModule.forFeature([{ name: Material.name, schema: MaterialSchema }]),
...
MaterialModule // 引入material模块

GraphQL CRUD

  1. resolvers 来定义 querymutation

  2. service来写逻辑

  3. inputs来定义输入类型

image-20210428234715844

graphql查询验证

graphql查询测试playground是一个图形化的交互式浏览器内GraphQL IDE

默认地址localhost:4000/graphql

使用firecamp更强大,它支持文件类型的测试,还可以存一些查询,自动读取字段

image-20210428231512390

https://dev.to/firecamp/here-is-the-fastest-graphql-playground-3bci


cos的缩略图服务:https://cloud.tencent.com/document/product/583/9736