6

たとえば、ブログ アプリケーションを設計する際に、次のようなものが必要だとします。

domain.com/post/729

それ以外の

domain.com/post/4f89dca9f40090d974000001

Rubyには次のようなものがあります

https://github.com/hakanensari/mongoid-slug

Node.jsに同等のものはありますか?

4

3 に答える 3

2

MongoDB の id は、実際にはそれを数値に変換するための 16 進数値です。次のコードを使用して、1、2、3 などのデータベース内の数値を検索できます。このコードは、その値を適切な 16 進数に変換します。

article_collection.db.json_serializer.ObjectID.createFromHexString(id)

article_collection はあなたのコレクションオブジェクトです

于 2012-05-25T06:11:52.740 に答える
1

いくつかの方法があります:

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: ..... }
于 2012-04-23T04:51:51.210 に答える
1

https://github.com/dodo/node-slughttps://github.com/stipsan/String.Slugify.jsなど、GitHub にはさまざまなプロジェクトがたくさんありますが、それらは文字列から有効な URL を作成することに重点を置いています (通常は投稿の件名または記事のタイトル)。乱数を取るものや、より短い乱数 (?) と一意の番号を生成する方法を見たことがありません。

個人的には、投稿オブジェクトに、DB ID を直接使用するよりも短い一意の値を含むトークン フィールドがあります (そして、少し安全です)。Mongoose を使用している場合は、Mongoose モデルで pre 'Save' イベントをフックすることにより、トークンを自動的に生成できます。

于 2012-04-23T04:49:39.480 に答える