2 回答

TA貢獻1827條經驗 獲得超9個贊
你可以這樣做
var userList []models.User
for _, a := range newUsers {
for _, element := range a.AssignedTo {
if element == paramId {
userList = append(userList, a)
}
}
}
if len(userList) == 0 {
c.IndentedJSON(http.StatusNotFound, gin.H{"message": "user not found"})
return
}
c.IndentedJSON(http.StatusOK, userList)

TA貢獻1859條經驗 獲得超6個贊
看起來你的 return 語句在你的 for 循環中,所以它找到第一個值并立即返回。當您將其注釋掉時,您的函數不會返回,因此它成功完成,然后打印錯誤消息。將 return 語句移到兩個 for 循環之外,應該沒問題。此外,通過錯誤標志添加用于發送錯誤消息的邏輯。還建議使用 Manjeet Thakur 的替代解決方案。
func GetUserByRole(c *gin.Context) {
paramId := c.Param("username")
.............
.............
.............
var newUsers []models.User
iter := client.Collection("users").Documents(ctx)
for {
doc, err := iter.Next()
if err == iterator.Done {
break
}
if err != nil {
log.Fatalf("Failed to iterate: %v", err)
}
var tempUsers models.User
if err := doc.DataTo(&tempUsers); err != nil {
break
}
newUsers = append(newUsers, tempUsers)
}
var errorflag := 1
for _, a := range newUsers {
for _, element := range a.AssignedTo {
if element == paramId {
c.IndentedJSON(http.StatusOK, a)
errorflag := 0
//if I comment this line line then I geting message `"user not found"` along with results
}
}
}
if errorflag{
c.IndentedJSON(http.StatusNotFound, gin.H{"message": "user not found"})
}
return
}
- 2 回答
- 0 關注
- 133 瀏覽
添加回答
舉報