首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
V2EX  ›  JavaScript

GraphQL 的非空字符串是可以为空字符串("")的?

  •  1
     
  •   wednesdayco · 84 天前 · 826 次点击
    这是一个创建于 84 天前的主题,其中的信息可能已经有所发展或是发生改变。

    文档原文“默认情况下,每个类型都是可以为空的 —— 意味着所有的标量类型都可以返回 null。使用感叹号可以标记一个类型不可为空,如 String! 表示非空字符串。”

    意味着字符串""是合法的(实验后确实也是这样),那么验证""这种“非空字符串”只能在 resolver 里面验证么?

    GraphQL 的非空字符串貌似跟我平时理解的非空字符串有差异啊……难道不是 Null 和""都是空么?

    17 回复  |  直到 2019-08-21 18:06:59 +08:00
        1
    SilentDepth   84 天前
    「这种“非空字符串”只能在 resolver 里面验证么?」
    是的。

    「难道不是 Null 和""都是空么?」
    null 是 null,空字符串是空字符串,它们可以表达不同的业务含义。不要被 JS 的隐式类型转换误导:
    null == "" // true
    null === "" // false
        2
    wednesdayco   84 天前
    @SilentDepth 同理还有空数组,空对象- -对吧
        3
    SilentDepth   84 天前
    @wednesdayco #2 是的,还有 undefined、NaN
        4
    jmc891205   84 天前
    null 是虚无
    ""才是空字符串
        5
    no1xsyzy   84 天前
    此空非彼空
    Python 里面 None 类型都不一样,根本不是字符串
        6
    TangMonk   84 天前
    此空非彼空,一切皆空
        7
    StarkWhite   84 天前
    null 和 "" 本来就不是一个含义,在很多语言都不一样的,只是 js,php 等动态语言会自动转换而已。
    GraphQL 很严谨的,业务上也应该区分开来,resolver 里校验 "" 是可以的。
        8
    Zink99   84 天前
    身为前端我一直理解 ID! String! 这类为必传参数
    所以当我必须传一个字符串,但是我又没有实际值可传的时候,传一个 "" 感觉是很自然的事。。。
        9
    wednesdayco   84 天前
    @Zink99 gql 中文文档写的是非空值= =,之后翻了下英文文档写的是 Non-Null 这就合理多了 = = 。
        10
    StarkWhite   83 天前
    @wednesdayco 那就是翻译问题了
        11
    StarkWhite   83 天前
    @Zink99 机智。原来 v 站能发狗头表情哈 ,为啥我复制粘贴就是空的呢?
        12
    Zink99   83 天前
    @StarkWhite #11 插件:v2ex plus
        13
    StarkWhite   83 天前
    @Zink99 原来这样啊,thx
        14
    SilentDepth   83 天前
    @Zink99 #8
    如果设定上必须传一个值,但实际上没有值可传,那一定是逻辑实现有问题,或者业务实现有问题。传 "" 是一个偷懒但危险的办法。

    ---

    @wednesdayco #9
    这是一个习惯问题。「空值」就应当指 null,「空字符串」(或简称「空串」)才是指 ""。
        15
    Zink99   83 天前
    @SilentDepth #14 产品用屁股想出来的需求,能咋办嘛
        16
    SilentDepth   83 天前
    @Zink99 #15 打死他
        17
    Zink99   83 天前
    @SilentDepth #16 老哥,看了你的回复,你阔以带带我这个菜鸡前端吗(认真脸
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4256 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 02:57 · PVG 10:57 · LAX 18:57 · JFK 21:57
    ♥ Do have faith in what you're doing.