如何用函数链中的空字符串替换数据库中的空值

Posted

技术标签:

【中文标题】如何用函数链中的空字符串替换数据库中的空值【英文标题】:how to replace null values from database with empty string in chain for functions 【发布时间】:2019-09-15 11:44:38 【问题描述】:

我正在使用 lodash 并且现在有这个代码

data: _(responseData.data)
     .pick(['title', 'layout', 'slug', 'author', 'seo', 'css', 'js'])
     .mapKeys((value, key) => _.camelCase(key))
     .value()

有些值可以从数据库中返回为空值。我想用空字符串替换空值 -> '' 但我不确定如何将另一个函数链接到上面的链。

【问题讨论】:

【参考方案1】:

你可以使用||运算符

_((responseData && responseData.data) || )
     .pick(['title', 'layout', 'slug', 'author', 'seo', 'css', 'js'])
     .mapKeys((value, key) => _.camelCase(key))
     .value()

【讨论】:

如果css返回为null,你的代码会把它变成一个空字符串而不是null吗?我不确定这会发生,你只是用一个空对象替换了整个返回的数据 如果responseData 为空,则最终值为空对象。我认为在空和非空情况下返回一个对象更加一致。你想返回一个空字符串吗?【参考方案2】:

使用_.mapValues() 迭代这些值,并使用_.isNull() 检查值是否为null

注意:如果您还想处理undefined 值,请将_.isNull() 替换为_.isNil()

const responseData = 
  data: 
    'title': 'title',
    'layout': null,
    'slug': null,
    'author': 'author',
    'seo': 'seo',
    'css': 'css',
    'js': 'js'
  


const data = _(responseData.data)
  .pick(['title', 'layout', 'slug', 'author', 'seo', 'css', 'js'])
  .mapKeys((value, key) => _.camelCase(key))
  .mapValues(value => _.isNull(value) ? '' : value)
  .value()

console.log(data)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>

【讨论】:

以上是关于如何用函数链中的空字符串替换数据库中的空值的主要内容,如果未能解决你的问题,请参考以下文章

使用tohash.select时,如何用字符串替换空值?

将嵌套的空值转换为数据框火花内的空字符串

如何从列类型列表中删除 pandas DataFrame 中的空值

EXCEL函数去除数组中的0值和空值

Pyspark:如何处理 python 用户定义函数中的空值

用空字符串替换字典数组中的 NSNull 值