Closed private-yusuke closed 1 year ago
(調査の結果 https://github.com/sylms/azuki 側の問題だと思ったためそちらに issue を作った方が良いと思いましたが、元はフロントエンドを利用していて気づいた問題だったのでとりあえず最初にこちらに issue を作ってみました)
検索結果が 0 件になるような条件を付けて検索する(例:「科目名」として "aaa" を入力する)と、その検索結果が確定した後でもローディングのアニメーションが表示されたままになってしまう。
本来は「条件に該当する科目はありません」のようなメッセージが表示されることが好ましいと思います。
「検索結果はこれ以上ありません」の文言が表示されることは普段遣いで確認できたので infiniteHandler の処理はこのままで良さそう。ゆえにフロントエンドの実装が問題なのではありません。
infiniteHandler
実際の問題は以下の箇所で検索結果が無いときに [] ではなく null を返してしまっていることだと思います。
[]
null
https://github.com/sylms/azuki/blob/57efce107d321fbcb998c66a4e26a1cb00363425/interface/handler/course.go#LL112 これは上記箇所でのスライスの初期化時の方法を var coursesJson []CourseJSON から coursesJson := []CourseJSON{} に変更すれば解消されるはずです(長さ 0 のスライスを作るように変更する)。
var coursesJson []CourseJSON
coursesJson := []CourseJSON{}
fixed by https://github.com/sylms/azuki/pull/65
概要
(調査の結果 https://github.com/sylms/azuki 側の問題だと思ったためそちらに issue を作った方が良いと思いましたが、元はフロントエンドを利用していて気づいた問題だったのでとりあえず最初にこちらに issue を作ってみました)
検索結果が 0 件になるような条件を付けて検索する(例:「科目名」として "aaa" を入力する)と、その検索結果が確定した後でもローディングのアニメーションが表示されたままになってしまう。
本来は「条件に該当する科目はありません」のようなメッセージが表示されることが好ましいと思います。
修正方針
「検索結果はこれ以上ありません」の文言が表示されることは普段遣いで確認できたので
infiniteHandler
の処理はこのままで良さそう。ゆえにフロントエンドの実装が問題なのではありません。実際の問題は以下の箇所で検索結果が無いときに
[]
ではなくnull
を返してしまっていることだと思います。https://github.com/sylms/azuki/blob/57efce107d321fbcb998c66a4e26a1cb00363425/interface/handler/course.go#LL112 これは上記箇所でのスライスの初期化時の方法を
var coursesJson []CourseJSON
からcoursesJson := []CourseJSON{}
に変更すれば解消されるはずです(長さ 0 のスライスを作るように変更する)。検証時のコード
```go package main import ( "encoding/json" "fmt" ) type Bar struct { Foo int `json:"foo"` } func createBar() Bar { bar := Bar { Foo: 42 } return bar } func beforeEmpty() { var arr []Bar // arr = append(arr, createBar()) content, err := json.Marshal(arr) if err != nil { fmt.Printf("%v\n", err) return } fmt.Printf("%s\n", content) } func beforeNotEmpty() { var arr []Bar arr = append(arr, createBar()) content, err := json.Marshal(arr) if err != nil { fmt.Printf("%v\n", err) return } fmt.Printf("%s\n", content) } func afterEmpty() { arr := []Bar{} // arr = append(arr, createBar()) content, err := json.Marshal(arr) if err != nil { fmt.Printf("%v\n", err) return } fmt.Printf("%s\n", content) } func afterNotEmpty() { arr := []Bar{} arr = append(arr, createBar()) content, err := json.Marshal(arr) if err != nil { fmt.Printf("%v\n", err) return } fmt.Printf("%s\n", content) } func main() { /* * notice the differences * - initialization of `arr` * - whether to append an element or not */ beforeEmpty() afterEmpty() beforeNotEmpty() afterNotEmpty() } ```