繁体   English   中英

如何使用MongoDB / Node.js创建友好的URL?

[英]How can I create friendly URLs with MongoDB/Node.js?

例如,假设在设计博客应用程序时我想要类似的东西

domain.com/post/729

代替

domain.com/post/4f89dca9f40090d974000001

Ruby有以下内容

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-slughttps://github.com/stipsan/String.Slugify.js,但他们专注于用字符串制作有效的URL(通常是帖子主题或文章标题)。 我没有看到任何采用随机数和一些如何产生更短的随机(?)和唯一数字。

就个人而言,我的帖子对象上只有一个令牌字段,其中包含的唯一值比直接使用DB id(并且更安全一点)更短。 如果您使用的是Mongoose,则可以通过在Mongoose模型上挂钩“保存”事件来自动生成令牌。

有几种方法:

1-假设您正在尝试为每篇博文提供唯一ID。 为什么不在博客集合中覆盖文档的“_id”字段? 样本文件将是:

{ "_id" : 122 , "content" : { "title: ..... }

你必须要注意一个生成自动增量id的方法,这很容易。 但是不建议使用这种类型的主键。 http://www.mongodb.org/display/DOCS/How+to+Make+an+Auto+Incrementing+Field

2-让_id字段保持原样,另外存储一个键'blogid',这是一个整数,你必须在'blogid`字段上运行ensureIndex ,尽快快速访问blogid。 存储开销很小,因为您将在文档中存储更多的键名和整数。

样本文件将是:

{ "_id" : xxxxxxxxxx ,"blogid" : 122, "content" : { "title: ..... }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM