英文:
Check error return code from Firestore Get golang sdk
问题
我正在尝试使用 golang sdk 在 firestore 中创建一个文档。
我该如何检查调用 DocumentRef.Get() 后返回的错误代码?
目前我正在检查错误是否包含 "NotFound" ... 显然不是理想的解决方法,但似乎找不到其他方法。
当前代码:
doc := firestoreClient.Collection("users").Doc(id)
userSnapshot, err := doc.Get(ctx)
var u *User
if err != nil {
isNotFound := strings.Contains(err.Error(), "NotFound")
if isNotFound {
// 创建文档
}
}
理想情况下,我想做类似这样的操作 if err.Code == NotFound // 适当处理
或者更好的是,如果有一种正确的模式可以在 Firestore 中获取或创建一个项目(使用 golang)。
英文:
I'm trying to create a document in firestore using golang sdk
How can I check the error code returned by the call to DocumentRef.Get() ?
Right now I'm checking if the error contains "NotFound"... Definitely not ideal but can't seem to find anything else
Current Code:
doc := firestoreClient.Collection("users").Doc(id)
userSnapshot, err := doc.Get(ctx)
var u *User
if err != nil {
isNotFound := strings.Contains(err.Error(), "NotFound")
if isNotFound {
// create the document
}
}
Ideally I would like to do something like if err.Code == NotFound // handle
appropriately
Or even better, if there's a right pattern for how to GetOrCreate an item in Firestore (using golang)
答案1
得分: 4
我刚在官方文档中找到了这个(https://pkg.go.dev/cloud.google.com/go/firestore#DocumentRef.Get):
import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
status.Code(err) == codes.NotFound
谢谢你提供的指引!这里还有一个线程:https://stackoverflow.com/questions/64806911/what-is-the-idomatic-way-to-get-a-single-document-from-firestore-using-go
另一个线程:https://github.com/googleapis/google-cloud-go/issues/861
英文:
I just found this in the official docs(https://pkg.go.dev/cloud.google.com/go/firestore#DocumentRef.Get)
import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
status.Code(err) == codes.NotFound
Thanks for the pointer here! https://stackoverflow.com/questions/64806911/what-is-the-idomatic-way-to-get-a-single-document-from-firestore-using-go
Another thread: https://github.com/googleapis/google-cloud-go/issues/861
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论