例如,假设在设计博客应用程序时,我想要类似的东西
domain.com/post/729
代替
domain.com/post/4f89dca9f40090d974000001
红宝石有以下
https://github.com/hakanensari/mongoid-slug
Node.js 中是否有等价物?
例如,假设在设计博客应用程序时,我想要类似的东西
domain.com/post/729
代替
domain.com/post/4f89dca9f40090d974000001
红宝石有以下
https://github.com/hakanensari/mongoid-slug
Node.js 中是否有等价物?
MongoDB 中的 id 实际上是一个十六进制值,可以将其转换为数值,您可以使用以下代码在数据库中搜索数值,例如 1、2、3.. 并且此代码将该值转换为适当的十六进制
article_collection.db.json_serializer.ObjectID.createFromHexString(id)
其中 article_collection 是您的收藏对象
GitHub 上有很多不同的项目,例如https://github.com/dodo/node-slug和https://github.com/stipsan/String.Slugify.js,但它们专注于从字符串中生成有效的 URL(通常是帖子主题或文章标题)。我还没有看到任何采用随机数的方法,并且有些方法会产生更短的随机数(?)和唯一的数字。
就我个人而言,我的 post 对象上只有一个令牌字段,其中包含一个唯一值,该值比直接使用 DB id 短(并且更安全一点)。如果您使用的是 Mongoose,则可以通过在您的 Mongoose 模型上挂钩 pre 'Save' 事件来自动生成令牌。
有几种方法:
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: ..... }