我有一个GoLang代码:
c.Find(selectQuery).All(&results)
if err == mgo.ErrNotFound {
// error handling
}
selectQuery
的值在这里并不重要。我永远不会收到错误
ErrNotFound
。即使查询与任何结果都不匹配,我也不会得到ErrNotFound
。我得到具有空属性的result
变量。我应该如何更改代码以处理ErrNotFound
大小写? 最佳答案
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()
)使用/返回。