技术中心

使用GraphQL和NodeJS的CRUD操作

2021年12月10日

张贴者:Ankit Kanojia

使用GraphQL和NodeJS的CRUD操作

介绍

在之前的 article,我们已经讨论了GraphQL的基本概念以及使用node js配置GraphQL.

Now, 在本文中, 我们将使用GraphQL + NodeJs创建REST api,并执行CRUD操作来理解流程工作流.

 

CRUD与GraphQL的关系如何?

GraphQL将API请求分为 查询和突变. 查询 它们不会改变数据的状态,只返回结果. 突变,另一方面,帮助修改服务器端数据. 因此,对于CRUD操作,您需要使用查询 读操作 然后发生突变 创建, 更新, or 删除操作

下表显示了CRUD与GraphQL的关系.

 

介绍-不是一个真正的数据库

它是一个“假”数据库,允许您将数据存储在JSON文件中. 使用下面的命令安装NPM包.

NPM I notarealdb || yarn添加notarealdb

官方包: notarealdb

 

开始

在开始之前,请在我之前的文章的帮助下配置初始项目并进行设置. 一旦项目配置完成,我们将一步一步地执行CRUD操作. 这里,将向您展示用简单的用户表进行CRUD操作 Id, FirstName, 伪数据库中的属性.

步骤1

创建 user.json 数据文件夹下的文件,我们将其视为假数据库文件. 对于示例数据,我最初在下面添加了JSON对象.

[{

    “id”:“S1002”,

    “firstName”:“Developer1”,

    “姓”:“Developer1”

}, {

    “id”:“S1002”,

    “firstName”:“Developer2”,

    “姓”:“Developer2”

}, {

    “id”:“S1003”,

    “firstName”:“Developer3”,

    “姓”:“Developer3”

}]

步骤2

Add 模式.graphql 文件放入根目录,该文件由方法的定义、表属性等组成.

类型查询{

    问候:字符串

    用户(用户):

}

类型突变{

    创建User(firstName:字符串, 姓:字符串): User!,

        deleteUser (id: id!):[用户],

        更新User (id: id!, firstName:字符串!, 姓:字符串!)(用户):

}

type用户{

    id: id!firstName:字符串

    姓:字符串

}

 

步骤3

Add db.js 该文件为用户配置路由,电竞赛事竞猜APP导出用户API路由并在其中使用 服务器.js 文件.

const {

    数据存储

} = require('notarealdb');

const store = new 数据存储('./数据”);

模块.出口= {

    用户:存储.收集(“用户”)

};

步骤4

创建 解析器.js 根目录下的文件. 解析器是 为模式中的类型或字段定义值的函数. 解析器将返回数字、对象、字符串、布尔值等. 连接数据库或数据库迭代的定义在解析器文件中完成.

读操作

const {

    数据存储

} = require('notarealdb');

const store = new 数据存储('./数据”);

const 查询。 = {

    users: () => store.收集(“用户”).列表(),

}

模块.出口= {

    查询。

}

 

创建操作

const {

    数据存储

} = require('notarealdb');

const store = new 数据存储('./数据”);

const 突变 = {

    //在用户列表中创建新用户

    创建User: (root, args, context, info) => {

        让userObj = store.集合(“用户”);

        让idCount = userObj.列表().长度;

        const newUser = {

            id: $ {idCount + +},

            firstName:参数.firstName,

            姓:参数.姓

        }

        userObj.创建(列出);

        返回分类列出

    },

}

模块.出口= {

    突变

}

 

更新操作

const {

    数据存储

} = require('notarealdb');

const store = new 数据存储('./数据”);

const 突变 = {

    //根据id更新用户详情

    更新User: (root, args, context, info) => {

        让userList =存储.集合(“用户”);

        userList.更新({

            id:参数.id,

            firstName:参数.firstName,

            姓:参数.姓

        });

        返回userList.列表()

    },

}

模块.出口= {

    突变

}



 

删除操作

 

const {

    数据存储

} = require('notarealdb');

const store = new 数据存储('./数据”);

const 突变 = {

    //从列表中删除指定用户

    deleteUser: (root, args, context, info) => {

        让userList =存储.集合(“用户”);

        userList.删除(arg游戏.id);

        返回userList.列表()

    }

}

模块.出口= {

    突变

}



这是你的 解析器.js 文件看起来像.

 

const {

    数据存储

} = require('notarealdb');

const store = new 数据存储('./数据”);

const 查询。 = {

    //获取用户列表

    users: () => store.收集(“用户”).列表(),

}

const 突变 = {

    //在用户列表中创建新用户

    创建User: (root, args, context, info) => {

        让userObj = store.集合(“用户”);

        让idCount = userObj.列表().长度;

        const newUser = {

            id: $ {idCount + +},

            firstName:参数.firstName,

            姓:参数.姓

        }

        userObj.创建(列出);

分享这


Back

按类别分类的帖子