postman秒传填入一个不存在的filehash时我这里会报错

来源:5-6 编码实战:实现秒传功能接口+小结

三生三途

2019-12-18

看了一下源码才知道db/file.go文件的GetFileMeta修改过了,但是调用QueryRow方法
err == sql.ErrNoRows时应该return &tfile, nil才对
不然meta/filemeta.go的GetFileMetaDB方法会报错,会拿到一个nil去赋值FileMeta结构体。。。
不明白老师的代码为什么能跑通,我看了半天也没看明白,
除非修改 db/file.go -> GetFileMeta-> err==sql.ErrNoRows -> return &tfile, nil

写回答

2回答

xiaomo

2019-12-22

目前meta/filemeta.go代码已经更新为:

func GetFileMetaDB(fileSha1 string) (FileMeta, error) {
tfile, err := mydb.GetFileMeta(fileSha1)
if err != nil || tfile == nil { // 增加tfile为nil的判断
return FileMeta{}, err
}
fmeta := FileMeta{
FileSha1: tfile.FileHash,
FileName: tfile.FileName.String,
FileSize: tfile.FileSize.Int64,
Location: tfile.FileAddr.String,
}
return fmeta, nil
}

如还有问题,请帮忙指正哦~~

0
0

xiaomo

2019-12-19

同学你好,感谢提bug,代码的确有问题,稍后将会把相关的几个分支代码更新一下。

0
0

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程