1
头图
  • 前段时间使用unicloud-db组件进行云端数据库的联表查询,结果了遇到了一些问题,在这里做一个记录

    起因:

    事情是这样子的,组长交给我一个任务说是运营小姐姐们想要后台新增一个界面用来查看图书和其他物品的借阅和归还情况,方便他们做一个统筹管理,于是安排我来做。

    正文:

    由于后台管理界面都是相同的样式于是很快啊我便搭好了基本的界面(dddd,搬来的哈哈哈),然后依据唯一的索引_uid找出来三张表做了主次区分,如下:
    unicloud-db

  • 联表查询的具体规则可以查看unicloud-db的组件介绍,这里贴下链接:unicloud-db简介
  • 同时链接副表字段的时候,需要依据数据库中设置的foreignKey进行设置,图中所示book_id和uid便是主表用来连接两张副表的foreignKey,在这里就不截图了(是的没错book_id是foreignKey也是字段名,不知道他们搭建数据库的时候是怎么设置的,刚开始确实给我搞混了)
    接下来只要把显示的字段写入中就可以了

  • 这里值得注意的是调用组件从云端数据库传回来的值是一个数组,其中嵌套了Object。不明白返回值是什么的话可以一层一层给他输出到控制台来查看,便于理解数据类型和找到问题修复bug。

    问题出现:

    一切就绪之后就进行编译,结果出现了问题,因为有点久远了而且不想把代码改回去复现哈哈哈所以就进行一个口述:
    说的是我的item.book_id[0].title中“title is undefined”,同样的问题肯定也出现在book_id上。但是同样写法的item.uid[0].name就没有出现错误。

  • 当我删掉后缀定义的title和book_id时并不会报错,只是页面表单上不会显示数据,所以重新加上并用console.log输出前文提到的数组,发现数组的legnth是0,原来是没有获取到数据库中的数据,便会显示未定义。这真的把我坑惨了我刚开始一直以为是写法的问题,可是看着正确答案想破了头也想不出比他更正确的写法直接陷入了自我怀疑
  • 进行检查发现原来是数据库中存有脏数据,之前的人在进行借阅测试的时候向其中输入了没有填写书名等缺少部分字段的数据记录,导致从数据库中获取数据时一遇到空的数据字段则会报错,如果该字段填写完整也不会报错。

    修改方式:

    bug倒是容易修复的就是找问题弄得我有点崩哈哈哈可能我心里还不够强大,把那两个字段单拎出来做一个if判断就行:
    fixed bug


诺金
5 声望2 粉丝

除了菜但是想努力变强想不出其他自我介绍了