gpt4 book ai didi

javascript - 在 url 中使用文章标题,而不是 id

转载 作者:行者123 更新时间:2023-12-02 16:46:59 27 4
gpt4 key购买 nike

我有一个指向不同文章的链接列表。它们看起来像这样:

<a ui-sref="post-view({ id: post._id })">...</a>

他们生成这样的href:href="/blog/546cb8af0c0ec394d7fbfdbf",这就是它应该做的。当我点击链接时,我会转到 ID 为 546cb8af0c0ec394d7fbfdbf 的相关文章。

但是,我认为在 url 中添加 id 比在文章标题中添加用户友好性要差一些,而这正是我想要的。但我想不出什么好的方法。

由于文章标题不一定是唯一的,因此我不知道如何根据标题从数据库中获取正确的文章(这是不可能的,我需要一些唯一的东西来查找它)。

我已经在 Node 上使用 mongodb、express 和 Angular 构建了该网站。对于路由,我使用 Angular ui-router 项目。

这是 ui.router 中路由的样子:

.state('post-view', {
url: '/blog/:id',
templateUrl: '/post',
controller: 'post'
})

如您所见,我在 URL 中使用 :id,并在 post Controller 中访问该 URL。

如果我应该在同一页面上显示文章,作为当前事件状态的子状态,我可以从父状态继承 id,但由于这会导致一个新页面,所以我不会确定我能做什么。

有人有这方面的经验吗?

最佳答案

我建议你使用slug。 slug 是标题的 URL 友好版本,

标题:我的英雄帖子

鼻涕虫:/my-hero-post

WordPress 广告示例每当从标题创建 slug 时都会进行一些替换:

文档:wp_unique_post_slug

Source code

您需要做的是将标题中的 å/ 等字符替换为 URL 友好的字符,并将空格替换为 - 和然后在创建帖子时将其保存为帖子对象中的唯一键。您还可以查看 Ghost 源代码的示例:

https://github.com/TryGhost/Ghost/blob/d44a97405bbe58730f3c397f504634a504d3e6e9/core/server/models/base.js#L322

这个 NPM 包实际上为您完成了大部分工作:slugify

关于javascript - 在 url 中使用文章标题,而不是 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27034929/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com