2016-12-05 52 views
1

如何將MongoDb的ObjectId的12字節BSON字符串編碼爲較短形式。 從24長度線到8或6?將MongoDB對象ID編碼爲較短形式

我試圖base64編碼和用於我現在正在使用的ObjectID的純字符串值

要求

  1. 較短長度4 - 8個符號
  2. 雙向編碼

字符串將被用作唯一的短網址。

ObjectId -> http://bla.com/{encode(ObjectId.toString('ascii'))} -

和反向操作

http://bla.com/gf8a4as1 -> Model.findById(decode(gf8a4as1)).lean().exec().then((model) => res.json(model)

回答

0

你想可逆包12個字節到4-8的符號?除非您使用長度超過1個字節的字符(這對於urls來說可能不是最理想的),否則這是不可能的。

你最好的選擇是使用base64的變體(RFC4648的標準urlsafe變體,例如-_ as),它會給你正好16個符號。否則,如果不需要全局唯一性,請考慮使用較短的ID(例如,序列號?)。