事情的起因是我总是没法收到我站点上的评论,我一直以为是 waline
超时了导致发送邮件失败,直到我打开了发邮件的那个邮箱,不看不知道,一看吓一跳!好家伙,根本就不是 waline
的锅,是163邮箱把我的邮件当作垃圾邮件拒收了!好吧好吧,我去设置白名单总行了吧。然而我设置了白名单之后仍然是收不到邮件…163我:RNM退钱!
我实在是没有搞懂163白名单的逻辑,它上面明明白白的写着 将发件人添加到白名单中,可避开反垃圾误判 然而实际上…
然后我去反馈,石沉大海…好吧网易,你了不起,你清高,你1080p!我不用你不就是了!
于是我来到 waline
的后台设置,结果发现没有能够改管理员邮箱的地方,又去翻看官方文档,欸!也没有…没办法,只能用笨方法——改数据库了。
我的waline数据库是使用的Leancloud,所以我登陆,选中数据,更改邮箱一气呵成,就大功告成了。然而我想着,既然这里的邮箱已经改了,那原来的评论我也改一下邮箱吧!欸,是不是很合理,十分合理对不对。
然后?你问我然后呀?然后就bug了…
waline后台是支持导出导入数据的,就直接导出了 json
数据,然后直接 Ctrl + H 替换了所有邮箱,按理来说改个邮箱应该是没有问题的。但是!当我把改好的文件导入waline后台的时候,每次快成功就报500错误。
去站点查看发现我回复的消息全部消失了,其他人的评论倒是都在。我都不知道哪里出了问题,看了看leancloud数据库,发现Comment
(评论)都有显示,然而Users
(用户)导入失败,全是空白,重新操作了几遍无果,只得去翻issue。欸嘿,上帝关一扇门,打开一扇窗,还真给我找着了。
不过有个问题是…这个issue说问题已经解决了,但是我重新部署了几遍waline也是无果我收回前言,上帝把窗也关上了…
然后我又盯上了leancloud的导入导出,因为leancloud每次导入只能导入一个 Class
,只得将原 json
拆成两部分Comment
和 Users
然后导入。然后欸嘿,成功了!他导进去了!而且网站的评论也完全显示了。
我长呼一口气,瘫坐在椅子上,正当我瘫软的手指按下发送键想庆祝一下的时候,咣当的一下,那令人不悦的提示音又响起了
Invalid value type for field 'insertedAt',value '{"__type":"Date","iso":"2022-06-26T04:42:22.223Z"}',expect type is {:type "String"},but it is '{:type "Date"}'. [400 POST https://lixp20cb.api.lncldglobal.com/1.1/classes/Comment] |
采访一下当事人:你现在什么感受?
我:现在呢,就是后悔,非常后悔。
你当时为什么想着要去改其他地方的邮箱呢?
我:我当时大抵是脑子进水了…
幸运的是,我在issue中找到了答案
LeanCloud 那边没有办法提供工单,Waline 后台提供的导入方法也是一样会报相同的错误,估计是 API 的问题,另外发现导出的数据会把 objectId, CreateAt 等字段的数据也包括在内,但这些都是保留字段,不能使用的。
你可以在国内版导出的json文件中尝试把
insertedAt
的字段修改为如下格式,再试着导入一下试试:
"insertedAt":{"__type":"Date","iso":"2014-03-25T17:28:00.000Z"}
我一看,这得了,我300多条评论数据,每条数据改一下 insertedAt
,我一条条改得到明年去了。一条条改是不可能的,这辈子都不可能的,只能勉勉强强写写正则这样子(临时抱佛脚)
"insertedAt": "([^)]*), |
然后重新导入,成功!站点显示成功!激动的心颤抖的手按下发送键…评论成功!
搞了快一个下午,本来只是想换个邮箱,未曾想会出现这么多问题,不过至少现在邮件是不会拦截的啦