GoLang mgo - mgo.ErrNotFound for find(...)。全部(...)

时间:2017-06-01 08:51:54

标签: mongodb go error-handling mgo

我有一个GoLang代码:

c.Find(selectQuery).All(&results)
if err == mgo.ErrNotFound {
// error handling
}

selectQuery值在这里并不重要。

我永远不会收到错误ErrNotFound。即使查询与任何结果不匹配,我也不会得到ErrNotFound。我得到带有空属性的变量result。我应该如何更改代码以处理ErrNotFound案例?

1 个答案:

答案 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()