使用三元运算符处理SQL转Mongo的三种字段值转换是否可行
解答:SQL转Mongo时的字段转换三元运算符问题
你在SQL转Mongo的数据迁移中遇到的这个字段转换需求挺常见的,先看你给出的这段代码能不能达成目标:
saved: data.saved && data.saved === 1 ? true : data.saved && data.saved === 0 ? false : null
很遗憾,这段代码不能正确实现你的需求,问题出在0的处理上:
- 当
data.saved是0时,第一个条件里的data.saved && data.saved ===1会因为0在逻辑与运算中被视为假值,直接跳过第一个分支进入else; - 接着第二个条件
data.saved && data.saved ===0,0 && true的结果还是0(假值),所以会走到最后的null分支,把原本应该转成false的0错误地变成了null。
那怎么修正呢?其实不需要用逻辑与来前置判断,直接用严格相等匹配就可以,这样能避免真值假值的干扰:
saved: data.saved === 1 ? true : data.saved === 0 ? false : null
这样就能准确处理三种情况:
- 当值严格等于
1时返回true - 当值严格等于
0时返回false - 当值是
null(或者其他未匹配的值)时返回null
如果想要更严谨一点,也可以先判断null,逻辑会更清晰:
saved: data.saved === null ? null : data.saved === 1 ? true : false
这个写法和上面的效果是一样的,看你个人习惯选择就行。
内容的提问来源于stack exchange,提问作者Muirik
相关产品推荐
相关产品推荐

