ouxch 最近的时间轴更新
ouxch

ouxch

🏢  KaXin.Tech / 后端研发工程师
V2EX 第 494925 号会员,加入于 2020-06-16 12:25:15 +08:00
今日活跃度排名 1063
82 S 57 B
Married to my university sweetheart, with our adopted cat Oboi by our side. 🚀👩‍❤️‍👨🐱 #developer #web3 #hiking #catlover
2023 年了, iPhone 怎么电话录音?
  •  1   
    Apple  •  ouxch  •  53 天前  •  最后回复来自 ghjexxka
    77
    大家在实际项目中使用 mongoDB 时怎么维护 Collections 结构的
    项目管理  •  ouxch  •  2021-02-25 21:53:29 PM  •  最后回复来自 lithiumii
    6
    Mybatis 到底好在哪?国内大厂也在用?
    Java  •  ouxch  •  94 天前  •  最后回复来自 chaleaochexist
    47
    Signal 群组推荐
  •  1   
    分享发现  •  ouxch  •  2021-08-10 07:21:37 AM  •  最后回复来自 martin000000
    4
    ouxch 最近回复了
    57 天前
    回复了 MindYoga 创建的主题 问与答 一元机场.com 是不是挂了?
    @azbcem 填了你的码
    58 天前
    回复了 ouxch 创建的主题 Apple 2023 年了, iPhone 怎么电话录音?
    @meisen #1 体验如何,能自动开启吗?
    59 天前
    回复了 hlwjia 创建的主题 推广 抽奖送 5 份《海外远程工作指南》
    01
    已领,感谢
    12 R7TTNT67F4F9 已用,感谢分享👍🏻
    2022-03-03 08:38:28 +08:00
    回复了 shuxhan 创建的主题 问与答 6500 以内预算的笔记本?
    6500 以内,不考虑 mba 的话,推荐楼主看看『华为 MateBook 13s 云杉绿』
    2022-01-03 14:24:47 +08:00
    回复了 tomari 创建的主题 分享发现 求有趣的中文 podcast(播客)推荐?
    无聊斋
    2022-01-03 14:24:25 +08:00
    回复了 tomari 创建的主题 分享发现 求有趣的中文 podcast(播客)推荐?
    最笨的办法当然就是写几个条件分支来组装最终的查询条件,例如:

    ```javascript
    const filter = { nickname: { $regex: nicknameReg } }
    if (!!id) fiter._id = ObjectId(id)
    if (!!status) fiter.status = status
    const findList = await userModel.find(filter)
    ```

    ---

    其实这是一个如何让编码更加优雅的问题,不只适用于此处你这个问题,如果从事`JavaScript`开发,建议了解下函数式编程,这里以函数式编程库 [ramda]( https://ramda.cn/) 为例,看看写出来又是怎样的:

    <br/>

    首先定义一个通用的纯函数 `omitNil`

    ```javascript
    const { reject, isNil } = require('ramda')
    const omitNil = reject(isNil)
    ```

    做个解释:

    `isNil` 和 `reject` 都是 **ramda** 直接提供的函数,并且 **ramda** 的函数都是自动柯里化的;
    `isNil` 的作用:检测输入值是否为 `null` 或 `undefined`;
    `reject` 的作用:可视为 `filter` 的补操作,简言之 `filter` 是留下满足条件的元素、`reject` 是排除满足条件的元素;

    将 `reject` 和 `isNil` 进行组合,得到 `omitNil` 函数,它的作用是:排除掉值为 `null` 或 `undefined` 的元素


    做一个简单直观的测试,看看 `omitNil` 函数的作用:

    ```javascript
    const obj = { a: 1, b: null, c: undefined }
    omitNil(obj) // => { a: 1 }
    obj // => { a: 1, b: null, c: undefined }

    const arr = [1, null, undefined]
    omitNil(arr) // => [ 1 ]
    arr // => [1, null, undefined]
    ```

    可以看到,`omitNil` 的返回值和输入参数相比,少了值为 `null` 或 `undefined` 的元素,并且没有修改原输入参数

    <br/>

    **现在回到楼主的问题**,就可以一行代码实现了:

    ```javascript
    const findList = await userModel.find(omitNil({ nickname: { $regex: nicknameReg }, _id: id, status }))
    ```

    <br/>

    最后,**ramda** 的核心设计理念就包含了:数据不变性和函数无副作用,因此以上纯函数均不会改变输入参数的值。

    <br/>

    > 参考:
    >
    > https://ramda.cn
    >
    > https://ramdajs.com/
    2021-12-31 13:27:36 +08:00
    回复了 182247236 创建的主题 MySQL MySQL 查询数据太慢了,该怎么优化?
    初看这个问题,从已提供的信息来看,只修改 sql 应该就能得到很大的优化,对索引调整可进一步优化。
    如不介意提供下:表结构语句、行数、期望输出、数据库实例(所在机器)的 CPU 核心数和内存大小
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4690 人在线   最高记录 5634   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:49 · PVG 15:49 · LAX 00:49 · JFK 03:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.