我正在尝试Relay和GraphQL.当我在做模式时,我这样做:
let articleQLO = new GraphQLObjectType({
  name: 'Article',description: 'An article',fields: () => ({
    _id: globalIdField('Article'),title: {
      type: GraphQLString,description: 'The title of the article',resolve: (article) => article.getTitle(),},author: {
      type: userConnection,description: 'The author of the article',resolve: (article) => article.getAuthor(),}),interfaces: [nodeInterface],})

所以,当我要求这样的文章时:

{
  article(id: 1) {
    id,title,author
  }
}

它会对数据库进行3次查询吗?我的意思是,每个字段都有一个解析方法(getTitle,getAuthor …),它向数据库发出请求.我做错了吗?

这是getAuthor的一个例子(我使用mongoose):

articleSchema.methods.getAuthor = function(id){
  let article = this.model('Article').findOne({_id: id})
  return article.author
}

解决方法

如果通过了解决方法的文章,你不能只访问该属性吗?
let articleQLO = new GraphQLObjectType({
  name: 'Article',resolve: (article) => article.title,resolve: (article) => article.author,})

由于Mongoose中的Schema.methods定义了模型上的方法,因此它不需要文章的ID(因为您在文章实例上调用它).所以,如果你想保留这个方法,你会这样做:

articleSchema.methods.getAuthor = function() {
  return article.author;
}

如果是你需要查找的东西,例如在另一个集合中,那么你需要做一个单独的查询(假设你没有使用refs):

articleSchema.methods.getAuthor = function(callback) {
  return this.model('Author').find({ _id: this.author_id },cb);
}

javascript – Relay / GraphQL’如何解决’有效?的更多相关文章

  1. GraphQL在react中的应用示例详解

    这篇文章主要为大家介绍了GraphQL在react中的应用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  2. GraphQL入门总体创建教程

    这篇文章主要为大家介绍了GraphQL入门总体创建教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  3. SpringBoot集成Graphql Query实战示例

    这篇文章主要为大家介绍了SpringBoot集成Graphql Query实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. Laravel中GraphQL接口请求频率实战记录

    这篇文章主要给大家介绍了关于Laravel中GraphQL接口请求频率的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  5. 从Hello World开始理解GraphQL背后处理及执行过程

    这篇文章主要为大家介绍了从Hello World开始理解GraphQL背后处理过程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  6. 使用与输入和输出类型相同的类的NestJS GraphQL

    看完这篇文章后,我想知道假设“代码优先”范式的正确方法是什么。下面的方法似乎有效——使用Location作为输入和输出。我知道对于共享代码的输入和输出类型有很多不好的地方——输入有各种验证,而输出没有,等等。但我认为Location是一个很好的例外,因为从大的角度来看,让我们假设Location像String或Int——在整个模式中被视为一个原语:然后我不明白为什么我不应该重复使用像Location这样简单的东西。其他人对此有看法吗?

  7. React内存使用情况部署到Heroku

    我最近完成了一个MERN堆栈web应用程序,并试图将其部署到Heroku上。它看起来像是已部署的,但当我尝试登录或创建用户时,它显示404未找到/grapql。当运行heroku日志-tails时,它在发布后表示,应用程序由于内存使用超过配额而崩溃。所以我在本地运行它,并使用DevTools查看内存使用情况。我目前正在尝试重构搜索到的内容,并使用react.llazy只显示用户的观点。

  8. 实现GraphQL Go解析器时的奇怪错误

    请帮帮我,我迷路了。

  9. 就数据库查询而言,GraphQL如何将分页应用于嵌套连接?

    我第一次尝试GraphQL、分页和Rails中的批加载。问题是,当我像下面这样运行查询时:我看到生成了以下SQL语句:所以,我的困惑是这里LIMIT的用法。Goal上的第一个查询是根据请求的页面添加LIMIT和OFFSET。但是,嵌套连接正在设置一个LIMIT=100,这与我的页面请求没有任何关系,而且我没有在任何地方设置值100。那么,为什么限制为100,以及如何应用页面大小?所以,也许预加载是正确的方式,除了可能我一开始没有正确实现分页?

  10. 更改对graphQL查询的响应

    我有一个返回如下对象的查询:其中一些字段将包含非字母数字字符,我希望从响应中去掉这些字符但这行不通。如何在使用数据之前修复数据?我不控制后端,也不控制数据如何进入后端。

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部