2016-12-05 4 views
1

MongoDbのObjectIdの12バイトのBSON文字列を短い形式にエンコードする方法。 長さ24行から8または6まで?MongoDBオブジェクトIDを短い形式にエンコードする

私はbase64エンコードを試してみましたし、今の私は

要件

  1. 短い長さ4つのObjectIDのプレーンな文字列値を使用しています - 8シンボル
  2. 双方向エンコーディング

文字列は一意の短いURLとして使用されます。

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

と操作

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

答えて

0

を逆にあなたは可逆4-8シンボルに12のバイトをパックしたいですか?これは、1バイトを超える文字を使用しない限り不可能です(おそらく、URLには最適ではありません)。

最高の選択肢は、base64(RFC4648の標準的なurlsafeバリアント、例えば-_とのバリエーション)を使用することです。正確に16の記号が表示されます。それ以外の場合は、グローバル一意性を必要としない場合は、短いID(連番など)を使用することを検討してください。

関連する問題