twikoojs / twikoo

💬 一个简洁、安全、免费的静态网站评论系统 | A simple, safe, free comment system.
http://twikoo.js.org
MIT License
1.4k stars 264 forks source link

置顶评论后会新生成一条相同评论,取消置顶后重复评论还在,如何解决? #682

Open dongjunke opened 2 months ago

dongjunke commented 2 months ago

wikoo v1.6.31 示例链接

imaegoo commented 2 months ago

请说明用了何种部署方式(腾讯云 / Vercel / Railway / Zeabur / Netlify / Hugging Face / 私有部署)

dongjunke commented 2 months ago

通过docker部署

imaegoo commented 2 months ago

gif

通过docker部署,无法重现该问题,请提供录屏、容器日志

imaegoo commented 2 months ago

因日志包含敏感内容,已删除。

从日志中提取关键信息如下

4/17/2024, 7:09:36 AM Twikoo: 错误信息: Error: Trying to update a document not in collection.
    at Collection.update (/app/node_modules/lokijs/src/lokijs.js:6055:17)
    at Resultset.update (/app/node_modules/lokijs/src/lokijs.js:3881:27)
    at Collection.findAndUpdate (/app/node_modules/lokijs/src/lokijs.js:5821:41)
    at commentSetForAdmin (/app/node_modules/tkserver/index.js:421:8)
    at module.exports (/app/node_modules/tkserver/index.js:93:21)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Server.\u003canonymous\u003e (/app/node_modules/tkserver/server.js:31:10)
imaegoo commented 2 months ago

错误是数据库执行更新操作时,找不到要更新的这行数据。是否曾手动编辑过db.json.x文件?

dongjunke commented 2 months ago

db.json.0 可能手动编辑过,具体记不太清了。升级版本后data文件夹里的内容整个替换过,原因是升级后发现没有评论内容,到宝塔的「容器【twikoo】 详情」的「数据的储存卷」查看了下路径,是/root/data,之前数据文件在/root/twikoo/data,就整个复制到/root/data,评论在前端显示了,但就出现了置顶自动生成两条评论。目前/root/data和/root/twikoo/data都有数据,是不是跟这个有关?

追加:好像不是这个原因,我把/root/twikoo/data内容清空,重启容器,还是出现置顶重复评论。

dongjunke commented 2 months ago

我已经把data整个文件夹打包发您邮箱了,请查收。

imaegoo commented 1 month ago

已检查data文件,您可能手动编辑过data文件,手动编辑可能会导致数据不完整,请按以下步骤修复数据库

  1. 打开Twikoo管理面板,点击导出-导出评论
  2. 停止twikoo的docker容器
  3. 备份data目录以防意外
  4. 删除data目录下的所有文件(db.json、db.json.0、db.json.1、db.json.2)
  5. 启动twikoo的docker容器
  6. 打开Twikoo管理面板,重新设置密码,然后导入,源系统选择twikoo,导入第1步时导出的twikoo-comment.json文件

至此数据库修复完成,您可以再次测试置顶评论功能