如何减少节点中的十六进制字符串(mongoose.type.ObjectId)?

问题描述 投票:0回答:1

我想知道如何将一个ID减去一个十六进制值,因为我的ID不匹配一个。我实际上有5ed5a251e0fc773a37ac2abc时有5ed5a251e0fc773a37ac2abd。我该怎么办?

背景:我将带有Gridfs-stream的文件存储到mongo中。在实际的数据库中,ID总是大一个。也许这是grifs-stream一方弃用的问题,但我仍然想解决这个问题。任何帮助,将不胜感激。

javascript mongodb math hex gridfs-stream
1个回答
0
投票

我做了这个

console.log( longHexaSubstractOne( '5ed5a251e0fc773a37ac2abd' ) )


function longHexaSubstractOne(longHexa)
  {
  let inHx = (longHexa.length%2) ? '0'+longHexa : longHexa // add leading zero if value length is even
    , arrX = inHx.match(/.{2}/g).map(v=>parseInt(v,16))    // cut by 8 bit an converse to integer value
    ;
  for (let i=arrX.length;i--;)  // make substract of 1
    {
    if (arrX[i]) { arrX[i]--; break }
    else         { arrX[i] =255     }    
    }
  return arrX.map(v=>('0'+v.toString(16)).slice(-2)).join('').replace(/^0+/, '')
  }
© www.soinside.com 2019 - 2024. All rights reserved.