此文章发布于 2024/06/22,部分内容可能已经过时,请谨慎甄别。

前言

众所周知,Twikoo(Vercel部署方式)一直有一个痛点,就是它的数据库是采用MongoDB进行存储的,而MongoDB官方并没有提供网页端编辑数据库的页面,而Twikoo提供的评论管理面板又功能简陋,这就导致一旦迁移了框架,文章URL结构变动,之前旧框架的评论数据就无法显示。

例如,我之前使用的是Gridea,它的URL结构是:

https://blog.365sites.top/post/[自定义的文章URL]/

而NotionNext的URL结构是:

https://blog.365sites.top/article/[自定义的文章URL]

前面的“article”还好办,因为NotionNext给出了相关配置:

// 文章URL前缀
  POST_URL_PREFIX: process.env.NEXT_PUBLIC_POST_URL_PREFIX ?? 'article',
// POST类型文章的默认路径前缀,例如默认POST类型的路径是  /article/[slug]
// 如果此项配置为空, 则文章将没有前缀路径

但关键是Gridea后面还有一个“/”

notion image

所以就这一符号之差,导致Twikoo在NotionNext中会给旧文章创建个新的空白评论区,导致旧的评论区数据被作废。

解决思路

还记得MongoDB的连接字符串吗?不记得的同学可以再看一看Twikoo的MongoDB文档

notion image

Twikoo的云函数就是通过这个东西连接到我们的数据库,然后对评论和配置进行增删改操作的。那我们能不能也通过这玩意去动我们的数据库呢?答案是肯定的。

动手操作

第一步,获取连接字符串

首先访问云函数的环境变量面板,找到很久以前配置过的这玩意:

notion image

点击Edit

notion image

然后Value这一部分就是我们的连接字符串啦!(其实熟练的同学这一步都不需要我教)复制下来并妥善保存。

notion image

⚠️安全警告

不要将您的字符串泄露给他人,否则您的数据库有被篡改的风险!

第二步,安装扩展

MongoDB官方提供了扩展来帮助你连接和访问数据库。

需要注意的是,从这一步开始,就必须要在已安装VSCode的电脑上进行。

如果你没有VSCode,你可以去它的官网或微软商店下载:

官网:code.visualstudio.com

微软商店

https://apps.microsoft.com/detail/xp9khm4bk9fz7q?hl=en-gb&gl=us

打开VSCode,点击扩展图标,搜索“MongoDB for VS Code”

notion image

点击”Install“安装此扩展。

如果安装时提示:

notion image

选择”Trust Workspace & Install“(信任并安装)。

第三步,连接数据库

安装完成后,打开MongoDB扩展,我们会看到有两种连接方式:

notion image

我们选择”Connect with Connection String”(使用连接字符串连接),然后在弹出的框中输入连接字符串(即刚刚保存的那个)

notion image

Enter以确定,等待完成连接

notion image

连接成功后就会在左侧显示出数据库的内容

notion image

在“Test”库中,有两个文件夹

notion image

其中comment为评论数据,config为存储的用户密码(加密后的密文)和配置文件。

开始编辑吧!(编辑后Ctrl+S即可保存到数据库)

notion image