首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将GraphQL查询从Node.js发送到Prisma

如何将GraphQL查询从Node.js发送到Prisma
EN

Stack Overflow用户
提问于 2018-07-25 04:43:03
回答 2查看 1.3K关注 0票数 2

我刚刚学会了如何使用graphql-yoga和基于HowToGraphQL教程prisma-binding创建一个HowToGraphQL教程服务器。

问题:到目前为止查询数据库的唯一方法是使用通过运行graphql playground命令启动的Prisma网页。

是否可以从Node.js脚本执行相同的查询?我遇到了阿波罗的客户,但它似乎意味着从一个正面层使用,如React,Vue,角。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-25 08:17:49

这是绝对可能的,最后,Prisma只是简单的HTTP,您可以将查询放入POST请求的正文中。

因此,您也可以在节点脚本中使用fetchprisma-binding

请参阅本教程以了解更多内容:https://www.prisma.io/docs/tutorials/access-prisma-from-scripts/access-prisma-from-a-node-script-using-prisma-bindings-vbadiyyee9

这也可能有帮助,因为它解释了如何使用fetch查询API:https://github.com/nikolasburk/gse/tree/master/3-Use-Prisma-GraphQL-API-from-Code

这就是使用fetch 的样子:

代码语言:javascript
复制
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绑定:

代码语言:javascript
复制
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))
票数 5
EN

Stack Overflow用户

发布于 2018-12-15 13:47:39

由于您正在使用Prisma并希望从NodeJS脚本中查询它,我认为您可能忽略了从Prisma定义生成客户机的选项。

它根据数据模型处理create/read/update/delete/upsert方法。另外,您可以减少对保持模型和查询/突变同步的担忧,因为它是使用Prisma CLI (prisma generate)生成的。

我发现与使用原始的GrahQL查询相比,它节省了大量的编码时间,这是我为更复杂的查询/突变而节省的。

有关更多细节,请查看他们的正式文件

另外,请注意,使用Prisma客户端是在prisma-绑定资源库中使用Prisma的推荐方法,除非:

除非您明确地希望使用架构委托。

我不能告诉你太多的事情。

直到我读到你的问题,我才知道prisma-binding的包裹。

编辑:

下面是另一个链接,它将两者都放在了正确的角度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51510940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档