我有一个GoLang代码:
c.Find(selectQuery).All(&results)
if err == mgo.ErrNotFound {
// error handling
}
selectQuery
值在这里并不重要。
我永远不会收到错误ErrNotFound
。即使查询与任何结果不匹配,我也不会得到ErrNotFound
。我得到带有空属性的变量result
。我应该如何更改代码以处理ErrNotFound
案例?
答案 0 :(得分:7)
Query.All()
永远不会返回mgo.ErrNotFound
,因此检查它是没用的。如果没有结果,则results
的长度将为0,因此如果没有错误,您就可以检测到:
err := c.Find(selectQuery).All(&results)
if err != nil { {
// error handling
return
}
// If you must detect "not found" case:
if len(results) == 0 {
// No results
}
mgo.ErrNotFound
由其他方法使用/返回,通常由那些应该在单个文档上运行的方法使用/返回,例如Query.One()
或Query.Apply()
。