请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师好,comments 表里面的 article_id 被篡改为 NULL

触发步骤:
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也消失了…………

正在回答 回答被采纳积分+3

3回答

Tomas 2022-11-27 16:47:33

两个点可以试一下哈:

1. 我看你代码里 entity 都没有显示设定主键 id 可以参考下代码把 id 声明出来试试

2. 看一下 comments 表里 artocle_id 字段和 article 的 id 主键字段都是不是 number

我怀疑可能是字段关联类型在数据库里两个对不上,导致 save 的时候设为 null 了

0 回复 有任何疑惑可以回复我~
  • 提问者 Alanrah #1
    好的,我排查下。我这边写了一个CommonEntity,包括定义自增主键id,其他entity都继承了这个CommonEntity
    回复 有任何疑惑可以回复我~ 2022-11-27 16:55:02
  • 提问者 Alanrah #2
    解决了,多谢老师
    回复 有任何疑惑可以回复我~ 2022-11-27 17:09:44
  • Tomas #3
    嗯嗯 没事 就是两个字段在表里的类型没对上导致的
    回复 有任何疑惑可以回复我~ 2022-11-27 17:15:11
Tomas 2022-11-27 16:38:16

试一下不调用 article.save 会不会被改呀

0 回复 有任何疑惑可以回复我~
  • 提问者 Alanrah #1
    不save不会被篡改,正常的
    回复 有任何疑惑可以回复我~ 2022-11-27 16:44:25
  • 提问者 Alanrah #2
    老师有啥好的解决办法么,需要更新views,还是需要save的
    回复 有任何疑惑可以回复我~ 2022-11-27 16:46:22
Tomas 2022-11-27 16:22:11

看了下你代码,把 comments 的 entity 文件里的 referencedColumnName 去掉呢,只保留 name 配置

0 回复 有任何疑惑可以回复我~
  • 提问者 Alanrah #1
    去掉了referencedColumnName,查询一次article详情之后,comments表里面对应article_id还是被篡改为null了
    回复 有任何疑惑可以回复我~ 2022-11-27 16:29:40
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信