触发步骤:
1.新建评论成功,这时候在navicat刷新comments表,数据一切正常。
2.然后在文章详情页请求 article 信息,和课程代码一样,
const article = await articlesRepo.findOne({
where: {
id: +id, // id是query传过来的articleId
},
relations: ['user', 'comments', 'comments.user'],
});
第一次请求返回的commens正常,但是这个查询操作,把comments数据表里面,article_id: 1 都给改成NULL了,如下图:
排查了发表评论没问题,就是查询一次文章详情,就会触发这个问题。对应的entity和老师的源码对比了下,也没看出啥问题😞
git地址:https://github.com/Alanrah/my-nextjs-blog
查询article详情文件路径: /pages/api/article/detail.ts
数据表新建:/sql/comments.sql
求助
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
注释掉entity里面 referencedColumnName ,新增文章评论两条,请求文章详情一次,comments表里面关联的 article_id 依然被置为null了
为null的那两行的,article_id应该是6才对
//////////////////////////////////////////////////////////////////////////////////////////////////
新增三条评论
查询文章详情,不调用 articlesRepo.save(article)
article_id 没有被篡改……
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
最后发现是entity定义的问题。comments新建后返回的id是string,虽然很迷惑,但是按照课程里面改了下:
这下comments新建后返回的id是number,神奇的bug也消失了…………