V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nikoxie
V2EX  ›  科技

字典类型的字段没有值时,后端该返回 0 还是 null

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

    起因是有些字段不是必填项,是通过字典维护的,值是 int 类型,前端希望返回值就是 null 或者空串方便展示,后端这边认为数字类型默认值就是 0 ,数据库默认值也是 0, 应该由前端处理,想问下大家平时是怎么处理的?

    18 条回复    2024-08-19 19:02:24 +08:00
    Paracosm
        1
    Paracosm  
       104 天前
    小公司,组内没有那么严格,一般跟前端约定,想要什么我就返回什么。。。。不过如果是 int 类型的话我默认也是传数据库的默认值
    yannxia
        2
    yannxia  
       104 天前
    合理应该是 null ,
    - 0: 此字段是必填项,但是有默认值
    - Null: 此字段是非填项
    zhangdp
        3
    zhangdp  
       104 天前
    返回 0 的话你们要怎么跟值真的为 0 的区分开?
    IvanLi127
        4
    IvanLi127  
       104 天前
    理论上得是 null ,除非你们已经定义了字典值是 0 表示用户未选择。这个情况我觉得在定义上有得商量。
    nikoxie
        5
    nikoxie  
    OP
       104 天前
    @yannxia 我也觉得是这样,但是现在后端不想处理。。。
    sagaxu
        6
    sagaxu  
       104 天前
    没有值的时候,就不该返回这个字段
    xiangyuecn
        7
    xiangyuecn  
       104 天前
    没有提供值,那就 null 或者不返回此字段

    可以返回 0 的情况,只有这个字段本身不包含 0
    wu00
        8
    wu00  
       104 天前
    不想处理,那 0 就 0 呗,大不了后面用-1 表示未填,0 表示 0
    nikoxie
        9
    nikoxie  
    OP
       104 天前
    @zhangdp
    @IvanLi127 会存在为 0 的项,现在就混淆了,本来想前端放拦截器处理,想了想也不行,没法统一判断是不是真的要转成 null ,只能针对字段处理,太繁琐了,维护也麻烦
    potatowish
        10
    potatowish  
       104 天前 via iPhone
    返回 null ,后端判断下就可以了,返回 0 的做法纯粹是后端偷懒
    Vegetable
        11
    Vegetable  
       104 天前
    前端有理
    ala2008
        12
    ala2008  
       104 天前
    应该是 Integer 类型,不返回最好
    vishun
        13
    vishun  
       104 天前
    `数据库默认也是 0`,这可以转变成数据库字段设计要不要为 null ,有些人喜欢用 null ,有些人喜欢用默认值 0 ,个人感觉按照数据库来就行了,数据库是什么返回就是什么。
    pkoukk
        14
    pkoukk  
       104 天前
    有公司规范或者代码规范,就是他说得对
    没有就是你对
    vishun
        15
    vishun  
       104 天前
    @nikoxie #9 如果 0 能混淆,你数据库设计时为什么会设计为 not null 且默认值是 0 呢,要改也是从数据库改,仅仅是后端程序不可能判定出是否混淆。
    matepi
        16
    matepi  
       104 天前
    为什么不是不传?

    从语义较优的感觉上
    不传 > 空串 > 0 = null

    平时怎么处理,看团队、看项目规范
    loading
        17
    loading  
       104 天前
    你的 api 没有设计 404 吗?
    返回 0 和 NULL 都是不对的。
    nikoxie
        18
    nikoxie  
    OP
       104 天前
    @vishun 我也挺疑惑的,这是我一个前端同事跟其他部门对接时碰到的问题,至少在当前情况下我认为返回 0 是肯定有问题的,默认值也不应该是 0

    @matepi create 的时候前端是可以不传的,现在主要是详情接口的后端返回值会是 0 ,他们 dto 里肯定有这个字段的

    @loading 可以详细说说吗,请问具体是怎么设计呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1030 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:36 · PVG 02:36 · LAX 10:36 · JFK 13:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.