我有一个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() )使用/返回。

07-26 03:53