たとえば、ブログ アプリケーションを設計する際に、次のようなものが必要だとします。
domain.com/post/729
それ以外の
domain.com/post/4f89dca9f40090d974000001
Rubyには次のようなものがあります
https://github.com/hakanensari/mongoid-slug
Node.jsに同等のものはありますか?
たとえば、ブログ アプリケーションを設計する際に、次のようなものが必要だとします。
domain.com/post/729
それ以外の
domain.com/post/4f89dca9f40090d974000001
Rubyには次のようなものがあります
https://github.com/hakanensari/mongoid-slug
Node.jsに同等のものはありますか?
MongoDB の id は、実際にはそれを数値に変換するための 16 進数値です。次のコードを使用して、1、2、3 などのデータベース内の数値を検索できます。このコードは、その値を適切な 16 進数に変換します。
article_collection.db.json_serializer.ObjectID.createFromHexString(id)
article_collection はあなたのコレクションオブジェクトです
いくつかの方法があります:
1-各ブログ投稿に一意の ID を提供しようとしていると仮定します。ブログ コレクション内のドキュメントの '_id' フィールドを上書きしてみませんか? サンプル ドキュメントは次のようになります。
{ "_id" : 122 , "content" : { "title: ..... }
ただし、自動インクリメント ID を生成する方法を探す必要がありますが、これは非常に簡単です。ただし、このタイプの主キーはお勧めしません。 http://www.mongodb.org/display/DOCS/How+to+Make+an+Auto+Incrementing+Field
2- _id フィールドはそのままにして、さらに整数であるキー「blogid」を保存しますensureIndex
。blogid によるアクセスを高速化するには、「blogid」フィールドで実行する必要があります。ドキュメントにキー名と整数をさらに保存するため、ストレージのオーバーヘッドはわずかです。
サンプル ドキュメントは次のようになります。
{ "_id" : xxxxxxxxxx ,"blogid" : 122, "content" : { "title: ..... }
https://github.com/dodo/node-slugやhttps://github.com/stipsan/String.Slugify.jsなど、GitHub にはさまざまなプロジェクトがたくさんありますが、それらは文字列から有効な URL を作成することに重点を置いています (通常は投稿の件名または記事のタイトル)。乱数を取るものや、より短い乱数 (?) と一意の番号を生成する方法を見たことがありません。
個人的には、投稿オブジェクトに、DB ID を直接使用するよりも短い一意の値を含むトークン フィールドがあります (そして、少し安全です)。Mongoose を使用している場合は、Mongoose モデルで pre 'Save' イベントをフックすることにより、トークンを自動的に生成できます。