Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用Graphene GraphQL解析嵌套在另一种类型中的字段?

如何使用Graphene GraphQL解析嵌套在另一种类型中的字段?
EN

Stack Overflow用户
提问于 2019-08-07 02:21:43
回答 1查看 6.7K关注 0票数 11

我有3个文件:authors.pyposts.pyschema.py

Posts只有一个作者,查询构建在架构文件中。

我试图从Author内部解析Post,而没有在Post中声明一个解析器函数,因为Author已经为自己声明了一个解析器函数。下面的代码可以工作,但我必须从resolve_author类型内部引用Post,这似乎不正确。我认为Graphene应该将parent param直接传递给Author,不是吗?

如果我没有在author类型中为Post设置一个解析器,它只返回null

schema.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import graphene
from graphql_api import posts, authors


class Query(posts.Query, authors.Query):
    pass


schema = graphene.Schema(query=Query)

authors.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from graphene import ObjectType, String, Field


class Author(ObjectType):
    id = ID()
    name = String()


class Query(ObjectType):
    author = Field(Author)

    def resolve_author(parent, info):
        return {
            'id': '123',
            'name': 'Grizzly Bear',
            'avatar': '#984321'
        }

posts.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from graphene import ObjectType, String, Field
from graphql_api import authors


class Post(ObjectType):
    content = String()
    author = Field(authors.Author)

    def resolve_author(parent, info):
        # I'm doing like this and it works, but it seems wrong. 
        # I think Graphene should be able to use my resolver 
        # from the Author automatically...
        return authors.Query.resolve_author(parent,
                                            info, id=parent['authorId'])


class Query(ObjectType):
    post = Field(Post)

    def resolve_post(parent, info):
        return {
            'content': 'A title',
            'authorId': '123',
        }
EN

回答 1

Stack Overflow用户

发布于 2019-08-07 04:58:45

Query.resolve_author不会被调用,因为它与Post对象之间没有任何关系。

我建议如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from graphene import ObjectType, String, Field
from graphql_api import authors


class Post(ObjectType):
    content = String()
    author = Field(authors.Author)

    def resolve_author(self, info):
        # author_utils.get_author returns complete object that will be passed into Author's object resolvers (if some fields are missing)
        # I suggest returning here an object from database so author resolver would extract another fields inside
        # But it may be just an id that will be passed in Author resolvers as first arguments
        return author_utils.get_author(post_id=self.id)


class Query(ObjectType):
    post = Field(Post)

    def resolve_post(parent, info):
        # Here you shouldn't author_id as it's not defined in type 
        return {
            'content': 'A title',
        }

Author (假设author_utils.get_author只返回一个id):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Author(ObjectType):
    id = ID()
    name = String()

    def resolve_id(id, info):
        # root here is what resolve_author returned in post. Be careful, it also will be called if id is missing after Query.resolve_author
        return id

    def resolve_name(id, info):
        # same as resolve_id
        return utils.get_name_by_id(id)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57392186

复制
相关文章
URL编码和Base64编码
在理清字符集和字符编码关系一文中我们介绍了常见字符集以及字符编码之间的关系,本期我们继续朝着这个方向介绍常见的编码算法。 URL编码 URL编码是浏览器发送数据给服务器时使用的编码,它是编码算法,而不
木可大大
2018/07/25
3.4K0
URL编码和Base64编码
URL安全的Base64编码
Base64编码可用于在HTTP环境下传递较长的标识信息。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。 然而,标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的「/」和「+」字符变为形如「%XX」的形式,而这些「%」号在存入数据库时还需要再进行转换,因为ANSI SQL中已将「%」号用作通配符。 为解决此问题,可采用一种用于
张善友
2018/01/22
7.1K1
Base64和URL编解码操作
在下载文件的时候有时候文件名称中含有中文名,下载下来后会乱码,所以就对文件名称进行一些编解码操作,来解决乱码。 BASE64编解码(解决火狐浏览器乱码): new BASE64Encoder().encode(需要编码的字节数组) —> 编码 new BASE64Decoder().decodeBuffer(解码内容) —> 解码 URL编解码: URLEncoder.encode(需要编码的内容, “UTF-8”); —> 编码 URLDecoder.decode(需要解码的内容,“UTF
阿年、嗯啊
2021/04/27
1.8K0
Java 图片URL转Base64编码
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/05
3.7K0
Java 图片URL转Base64编码
js 根据url 转换图片(base64)
function getBase64(url, callback) { var Img = new Image(), dataURL = ''; Img.src = url + '?v
我乃小神神
2020/04/16
15.5K2
使用url_launcher打开App
1. 添加依赖 dependencies: url_launcher: ^5.4.11 2. openWebView app _launchURL() async { const url = 'http://it200.cn/'; if (await canLaunch(url)) { await launch(url); } else { throw 'Could not launch $url'; } } 3. openMap App _
前端小鑫同学
2022/12/24
8440
c++报错无法打开文件_如何打开源文件
一、无法打开文件“xxx.lib” 出现这种错误一般为 ①未添加xxx.lib库文件 ②库添加后,路径不对,找不到对应的库文件路径 解决方案: 先查看库文件是否已经添加 若未添加,右击项目->属性->链接器->输入;将库文件加入即可 如果库文件已经添加,仍然报错,此时需要查看生成的库文件的路径了。 先找到生成库文件的路径,右击项目->属性->常规->查看输出目录是否与生成的库文件的路径是否匹配,若不匹配,修改路径即可。
全栈程序员站长
2022/11/01
10.2K0
php使用Base64加密解密URL地址教程
要知道Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,看好是编码,并不是加密。
李洋博客
2021/06/15
2.5K0
php使用Base64加密解密URL地址教程
Base64码常见操作(url链接文件转base64编码、本地文件转base64编码等)
因为是图片,可以复制输出的base64编码到这个网址验证:https://tool.jisuapi.com/base642pic.html 其他base64操作如下:
共饮一杯无
2022/11/28
2.3K0
Groovy Base64 URL和文件名安全编码
Groovy支持Base64编码很长一段时间。 从Groovy 2.5.0开始,我们还可以使用Base64 URL和Filename Safe编码来使用encodeBase64Url方法对字节数组进行编码。 结果是一个Writable对象。 我们可以在Writable对象上调用toString方法来获得String值。 可以使用添加到String类的decodeBase64Url方法使用相同的编码对编码的String值进行解码。
白石
2019/08/22
1.3K0
Go实战 | url和base64编码原理及应用
大家好,我是渔夫子。今天跟大家聊聊在实际工作中遇到的对密文进行base64编码和url转义的一个案例。
Go学堂
2023/01/31
1.1K0
URL scheme实现携带数据打开小程序
我这里做一个快速的整理思路: 1、鉴权调用接口凭证(access_token) 2、 HTTPS 调用 POST 请求地址:
德宏大魔王
2023/08/08
5560
URL scheme实现携带数据打开小程序
vue网络图片url转Base64「建议收藏」
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/30
4.1K0
iOS打开系统功能对应的URL
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"URLString"]] 关于 iOS 系统功能的 URL 汇总列表: 蜂窝网络:prefs:root=MOBILE_DATA_SETTINGS_ID V** — prefs:root=General&path=Network/V** Wi-Fi:prefs:root=WIFI 定位服务:prefs:root=LOCATION_SERVICES 个人热点:prefs:roo
程序员不务正业
2018/06/14
9190
Flutter--在浏览器打开URL
在使用Flutter开发的时候,希望在浏览器中打开URL,而在pub_env中已经存在url_launcher库可以实现该功能。
None_Ling
2021/11/24
2K0
Flutter--在浏览器打开URL
如何使用xurlfind3r查找目标域名的已知URL地址
xurlfind3r是一款功能强大的URL地址查询工具,该工具本质上是一个CLI命令行工具,可以帮助广大研究人员从多种在线源来查询目标域名的已知URL地址。
FB客服
2023/10/06
3320
如何使用xurlfind3r查找目标域名的已知URL地址
通过指定的URL获取返回图片的BASE64编码
之前本来都是通过URL直接显示图片的,后来需求变更前端需要图片的base64,但是现在数据库只有URL,写了个方法通过URL获取图片的BASE64
彼岸舞
2021/05/18
3K0
Filter实现登录后自动跳转目标url
马 克-to-win:下面我们将利用Filter技术完成一个稍微实用一点的需求。需求的内容如下:一言以蔽之,我们就想保护internal目录下的所有 资源,(其他地方不保护)。具体有这么几点:如果用户非法访问internal目录下的资源,就将他导向internal目录下的login.jsp。如 果在login.jsp当中,他输入了正确的用户名和密码,就让他自动跳转到他原来想访问的那个jsp。但如果在一开始,用户直接就想访问 login.jsp,即使他输入了正确的用户名和密码,也只把他导向回根目录的首页index.jsp。这里需求有两个难点。一是自动跳转到他原来想访问 的那个jsp,这需要把他原来想要访问的目标给存在Session当中。想得到他想访问的目标,就用 (HttpServletRequest)hsr.getRequestURI()。马克-to-win:这还不算难。第二个难点就更难。我怎么能知道用 户一开始的目的就是想访问login.jsp,还是用户一开始想访问internal目录里其他的资源而被导到login.jsp的呢?因为 login.jsp也在internal目录里,所以到达login.jsp之前,无论如何要经过Filter。问题好像很困难。这里,我是这样完成这个 需求的:当用户想非法访问internal目录下的任何资源前一瞬间(除了login.jsp自己,这一点你要加判断,desURL.endsWith ("login.jsp"),否则逻辑上会出问题,不信你试试),我在request范围里加上一个标志:illegal。马克-to-win:只有这种 情况,我才加这个标志。这样在login.jsp的正常程序前,我再加一个判断,看是否有这个标志?如果有,就证明用户想非法访问internal目录下 的某个资源。如果没有这个标志,就说明用户一开始就想访问login.jsp。
马克java社区
2021/07/30
1.3K0
C# Base64上传文件
/// <summary> /// base64转换为图片并保存在指定目录中 /// </summary> /// <param name="strbase64">64Base码</param> /// <returns></returns> public static void Base64ToImage(string strbase64) { var encodedImage = strbase64.Split(',')[1]; var decodedImage = Convert.Fr
小语雀网
2021/09/08
9570
点击加载更多

相似问题

目标C中的URL安全Base64

20

转换Base64 GZipped字符串目标-c或Swift

12

目标C中的JavaScript Base64加密url、解密

12

如何在Swift或目标C中从UIImage获取URL?

25

目标-c Base64编码

49
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文