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

pou*_*ius 5 error-handling go mongodb mgo

我有一个GoLang代码:

c.Find(selectQuery).All(&results)
if err == mgo.ErrNotFound {
// error handling
}
Run Code Online (Sandbox Code Playgroud)

selectQuery 价值在这里并不重要.

我永远不会得到错误ErrNotFound.即使查询不匹配任何我得不到的结果ErrNotFound.我得到result空属性的变量.我应该如何更改代码来处理ErrNotFound案例?

icz*_*cza 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
}
Run Code Online (Sandbox Code Playgroud)

mgo.ErrNotFound由其他方法使用/返回,通常是那些应该在单个文档上运行的方法,例如Query.One()Query.Apply().