大家好,在GraphQl系列的这一部分中,我将讨论解析器。
解析器
-
它们是定义如何检索或操纵GraphQL模式中每个字段的数据的函数。解析器是GraphQL Server实现的关键部分,负责从各种来源(例如数据库,API或其他服务)获取数据,并返回所需的数据。
-
客户端发送GraphQl查询时,服务器将查询中的字段与相应的解析器匹配。模式中的每个字段都有一个关联的解析器函数,该函数决定了如何解析该字段的数据。
创建一个解析器 -
- 在本系列的上一部分中,您创建了一个名为“ schema”的文件夹,该文件夹在该文件夹中创建另一个名为“解析器,JS”的文件,并在此处粘贴该代码。
const { fakeData } = require("../FakeData")
const lodesh = require("lodash")
const resolvers = {
Query: {
// Get All users
users() {
return fakeData
},
// Get user by ID
user(parent, args) {
const id = args.id
const user = lodesh.find(fakeData, { id: Number(id) })
return user
},
// Get user by Name
userByName(parent, args) {
const name = args.name
const user = lodesh.find(fakeData, { name })
return user
},
},
}
module.exports = { resolvers }
- 在这里,我们为在Typedefs中创建的3个处理程序创建了3个处理程序功能。
-
args将具有在Typedefs架构文件中定义的所有属性。
-
还创建一个名为fakedata.js的文件并将此数据添加到其中。
//fakeData.js
const fakeData = [
{
id: 101,
name: "User 1",
age: 24,
isEmployee: true,
role: "WebDeveloper",
friends: [
{
id: 102,
name: "User 2",
age: 21,
isEmployee: true,
role: "Tester"
},
{
id: 103,
name: "User 3",
age: 20,
isEmployee: false,
role: "SoftwareEngineer"
},
{
id: 104,
name: "User 4",
age: 27,
isEmployee: true,
role: "WebDeveloper"
}
]
},
{
id: 102,
name: "User 2",
age: 21,
isEmployee: true,
role: "Tester",
friends: [
{
id: 103,
name: "User 3",
age: 20,
isEmployee: false,
role: "SoftwareEngineer"
},
{
id: 104,
name: "User 4",
age: 27,
isEmployee: true,
role: "WebDeveloper"
}
]
},
{
id: 103,
name: "User 3",
age: 20,
isEmployee: false,
role: "SoftwareEngineer",
friends: [
{
id: 104,
name: "User 4",
age: 27,
isEmployee: true,
role: "WebDeveloper"
}
]
},
{
id: 104,
name: "User 4",
age: 27,
isEmployee: true,
role: "WebDeveloper",
friends: [
{
id: 103,
name: "User 3",
age: 20,
isEmployee: false,
role: "SoftwareEngineer"
}
]
}
];
module.exports = { fakeData }
- 假数据集操纵GraphQl处理程序功能。
现在运行此命令 -
npm run start
- 它将在Localhost:4000使用GraphQl UI启动服务器,您可以在其中检查API响应
这就是您可以为GraphQL API创建解析器的方法。在本系列的下一部分中,我将讨论突变,这将有助于创建,更新或从数据集中删除数据。
感谢您检查此帖子
您可以与我联系 -
Instagram -https://www.instagram.com/supremacism__shubh/
LinkedIn -https://www.linkedin.com/in/shubham-tiwari-b7544b193/
电子邮件-shubhmtiwri00@gmail.com
^^您可以在下面的链接上为我提供一些捐款,谢谢^^^
â --> https://www.buymeacoffee.com/waaduheck <--
也检查这些帖子
https://dev.to/shubhamtiwari909/website-components-you-should-know-25nm
https://dev.to/shubhamtiwari909/smooth-scrolling-with-js-n56
https://dev.to/shubhamtiwari909/swiperjs-3802
https://dev.to/shubhamtiwari909/custom-tabs-with-sass-and-javascript-4dej