收藏
回答

云数据库 _id好长

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 wx3ebfd879bc046250 gc-gwanb 2.103
  • _id:
  • "1584021120434_0.983830209324497_33605008-1584021172520_1_24654"
  • (string)

为啥要这么长的id啊小程序码scene参数限制好烦啊~


回答关注问题邀请回答
收藏

2 个回答

  • 七叶
    七叶
    2020-03-13

    在写入数据指定ID,可以参考下面的算法生成ID。

    // 基于base62编码生成14位的ID字符串
    // 优点:短/按时间序/双击可全选/唯一性足够安全
    function getId() {
      var ret = ''
      var ms = (new Date()).getTime()
      ret += base62encode(ms, 8) // 6923年循环一次
      ret += base62encode(Math.ceil(Math.random() * (62**6)), 6) // 冲突概率为每毫秒568亿分之一
      return ret
    }
    let codeStr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    function base62encode(v, n){
      var ret = ""
      for(var i=0;i<n;i++){
        ret = codeStr[v%codeStr.length] + ret
        v = Math.floor(v/codeStr.length)
      }
      return ret
    }
    
    2020-03-13
    有用 1
    回复 1
    • 10点😴
      10点😴
      2020-03-14
      感谢
      2020-03-14
      回复
  • 10点😴
    10点😴
    2020-03-12

    let wxuuid = function () {

      let s = [];

      let hexDigits = "0123456789abcdefghijklmnopqrstuvwxyz";

      for (let i = 0; i < 36; i++{ //id长度

        s[i= hexDigits.substr(Math.floor(Math.random() * 0x10), 1);

      }

      s[14= "4"; // bits 12-15 of the time_hi_and_version field to 0010

      s[19= hexDigits.substr((s[19& 0x3| 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01

      s[8= s[13= s[18= s[23= "-";


      let uuid = s.join("");

      return uuid


    }


    2020-03-12
    有用
    回复 5
    • Mr.Zhao
      Mr.Zhao
      2020-03-12
      你没必要非得用uuid吧,_id用uuid,再建一个业务ID,跟流水号一样
      2020-03-12
      回复
    • 10点😴
      10点😴
      2020-03-12回复Mr.Zhao
      流水号怎么生成
      2020-03-12
      回复
    • 10点😴
      10点😴
      2020-03-12
      let now =new Date()
      return ''+now.getFullYear()+now.getMonth()+now.getDate()+now.getHours()+now.getMinutes()+now.getSeconds()+now.getMilliseconds()
      2020-03-12
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-03-12回复10点😴
      几个字符 + 时间戳,比如 wx1111111111111
      2020-03-12
      回复
    • 10点😴
      10点😴
      2020-03-12
      (now.getMonth()+1)
      2020-03-12
      回复
登录 后发表内容
问题标签