我刚刚学会了如何使用graphql-yoga和基于HowToGraphQL教程的prisma-binding创建一个HowToGraphQL教程服务器。
问题:到目前为止查询数据库的唯一方法是使用通过运行graphql playground命令启动的Prisma网页。
是否可以从Node.js脚本执行相同的查询?我遇到了阿波罗的客户,但它似乎意味着从一个正面层使用,如React,Vue,角。
发布于 2018-07-25 08:17:49
这是绝对可能的,最后,Prisma只是简单的HTTP,您可以将查询放入POST请求的正文中。
因此,您也可以在节点脚本中使用fetch或prisma-binding。
这也可能有帮助,因为它解释了如何使用fetch查询API:https://github.com/nikolasburk/gse/tree/master/3-Use-Prisma-GraphQL-API-from-Code。
这就是使用fetch 的样子:
const fetch = require('node-fetch')
const endpoint = '__YOUR_PRISMA_ENDPOINT__'
const query = `
query {
users {
id
name
posts {
id
title
}
}
}
`
fetch(endpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ query: query })
})
.then(response => response.json())
.then(result => console.log(JSON.stringify(result)))如果您想使用fetch的轻量级包装器来避免编写样板,请务必检查graphql-request。
--以下是如何使用Prisma绑定:
const { Prisma } = require('prisma-binding')
const prisma = new Prisma({
typeDefs: 'prisma.graphql',
endpoint: '__YOUR_PRISMA_ENDPOINT__'
})
// send `users` query
prisma.query.users({}, `{ id name }`)
.then(users => console.log(users))
.then(() =>
// send `createUser` mutation
prisma.mutation.createUser(
{
data: { name: `Sarah` },
},
`{ id name }`,
),
)
.then(newUser => {
console.log(newUser)
return newUser
})
.then(newUser =>
// send `user` query
prisma.query.user(
{
where: { id: newUser.id },
},
`{ name }`,
),
)
.then(user => console.log(user))发布于 2018-12-15 13:47:39
由于您正在使用Prisma并希望从NodeJS脚本中查询它,我认为您可能忽略了从Prisma定义生成客户机的选项。
它根据数据模型处理create/read/update/delete/upsert方法。另外,您可以减少对保持模型和查询/突变同步的担忧,因为它是使用Prisma CLI (prisma generate)生成的。
我发现与使用原始的GrahQL查询相比,它节省了大量的编码时间,这是我为更复杂的查询/突变而节省的。
有关更多细节,请查看他们的正式文件。
另外,请注意,使用Prisma客户端是在prisma-绑定资源库中使用Prisma的推荐方法,除非:
除非您明确地希望使用架构委托。
我不能告诉你太多的事情。
直到我读到你的问题,我才知道prisma-binding的包裹。
编辑:
下面是另一个链接,它将两者都放在了正确的角度。
https://stackoverflow.com/questions/51510940
复制相似问题