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 关注
- 111 浏览
添加回答
举报