dsnap.Data() returns nil 如果文档不存在
dsnap.Data() returns nil if the document does not exist
我已经编写了一个控制器 GetUser
以根据我输入查询的 id
从数据库 (Firestore) 获取特定用户。如果用户不在数据库中,那么它应该给出 "User not found"
的消息。但是除了这条消息,我还得到了 nil
关键字作为响应。
我得到的回应:
{
"message": "User not found"
}null
当我将鼠标悬停在 dsnap.Data()
上时,我得到的信息是
(firestore.DocumentSnapshot).Data on pkg.go.dev
Data returns the DocumentSnapshot's fields as a map. It is equivalent to
var m map[string]interface{}
d.DataTo(&m)
except that it returns nil if the document does not exist.
控制器:
func GetUser(c *gin.Context) {
paramID := c.Params.ByName("id")
........
........
........
dsnap, err := client.Collection("users").Doc(paramID).Get(ctx)
if err != nil {
fmt.Print(err)
c.IndentedJSON(http.StatusNotFound, gin.H{
"message": "User not found",
})
}
m := dsnap.Data()
c.IndentedJSON(http.StatusNotFound, gin.H(m))
}
Firestore 参考 link:https://pkg.go.dev/cloud.google.com/go/firestore@v1.6.1#DocumentSnapshot.Data
你们能告诉我如何从回复中删除 nil
吗?
谢谢。
此问题现已解决。我在 User not found
回复后写 "return"
。
我已经编写了一个控制器 GetUser
以根据我输入查询的 id
从数据库 (Firestore) 获取特定用户。如果用户不在数据库中,那么它应该给出 "User not found"
的消息。但是除了这条消息,我还得到了 nil
关键字作为响应。
我得到的回应:
{
"message": "User not found"
}null
当我将鼠标悬停在 dsnap.Data()
上时,我得到的信息是
(firestore.DocumentSnapshot).Data on pkg.go.dev
Data returns the DocumentSnapshot's fields as a map. It is equivalent to
var m map[string]interface{}
d.DataTo(&m)
except that it returns nil if the document does not exist.
控制器:
func GetUser(c *gin.Context) {
paramID := c.Params.ByName("id")
........
........
........
dsnap, err := client.Collection("users").Doc(paramID).Get(ctx)
if err != nil {
fmt.Print(err)
c.IndentedJSON(http.StatusNotFound, gin.H{
"message": "User not found",
})
}
m := dsnap.Data()
c.IndentedJSON(http.StatusNotFound, gin.H(m))
}
Firestore 参考 link:https://pkg.go.dev/cloud.google.com/go/firestore@v1.6.1#DocumentSnapshot.Data
你们能告诉我如何从回复中删除 nil
吗?
谢谢。
此问题现已解决。我在 User not found
回复后写 "return"
。