例如,假設在設計博客應用程序我想是這樣如何使用MongoDB/Node.js創建友好的URL?
domain.com/post/729
而不是
domain.com/post/4f89dca9f40090d974000001
Ruby有以下
https://github.com/hakanensari/mongoid-slug
是否有EQU在Node.js中有價值嗎?
例如,假設在設計博客應用程序我想是這樣如何使用MongoDB/Node.js創建友好的URL?
domain.com/post/729
而不是
domain.com/post/4f89dca9f40090d974000001
Ruby有以下
https://github.com/hakanensari/mongoid-slug
是否有EQU在Node.js中有價值嗎?
有幾種方法:
1 - 假設你正在試圖提供一個唯一的ID給每個博客文章。 爲什麼不覆蓋博客集合中文檔的'_id'字段? 樣的文件將是:
{ "_id" : 122 , "content" : { "title: ..... }
你將不得不尋找出雖則生成自動增量ID的方法,這是非常容易的。 但是這種類型的主鍵不推薦使用。 http://www.mongodb.org/display/DOCS/How+to+Make+an+Auto+Incrementing+Field
2 - 讓_id場保持原樣,並且additionaly存儲密鑰「blogid」,這是一個整數,你將不得不對「blogid`場運行ensureIndex
雖然使由blogid快速訪問。存儲開銷會很小,因爲您將在文檔中存儲更多的鍵名和整數。
樣品的文件是:
{ "_id" : xxxxxxxxxx ,"blogid" : 122, "content" : { "title: ..... }
GitHub上有許多不同的項目,如https://github.com/dodo/node-slug和https://github.com/stipsan/String.Slugify.js,但他們專注於從字符串(通常是帖子主題或文章標題)中生成有效的URL。我還沒有看到任何一個隨機數字,一些如何產生一個較短的隨機(?)和唯一的數字。
就我個人而言,我只在我的發佈對象上有一個標記字段,它包含一個比直接使用數據庫標識更短(並且更安全一點)的唯一值。如果您使用的是Mongoose,則可以通過在Mongoose模型上掛鉤前「保存」事件來自動生成令牌。
MongoDB中的ID實際上是將其轉換成數字值,你可以使用下面的代碼在數據庫中搜索數值像1,2十六進制值3 ..和這個代碼將這個值轉換成相應的十六進制
article_collection.db.json_serializer.ObjectID.createFromHexString(id)
其中article_collection是您的收藏對象
是否圍繞scalabilit的blogid方法裙問題還是會遇到與方法1相同的問題? – deltanovember 2012-04-23 05:08:49
@deltanovember blogid方法正常工作。唯一的開銷是數據的額外存儲以及blogid鍵上的索引。也會建議儘可能小地命名這個字段,因爲它需要每個文檔的空間,'bid'應該沒問題。 – DhruvPathak 2012-04-23 05:11:48