如何用golang更新firestore中的数组元素?

时间:2018-03-08 09:02:48

标签: go google-cloud-firestore

以下代码:

Lobby := map[string]interface{}{
        "table_id"          :"new table id",
        "Status"            : true,
        "name"              : "shivam",
        "array":[]interface{}{0,1,3},// this replace existing array with new values
    }

result, err := client.Collection("lobbies").Doc("12").Set(ctx,Lobby,firestore.MergeAll)

我只想用新值

更新数组中的第二个元素

1 个答案:

答案 0 :(得分:2)

无法通知数据库替换切片或数组中的特定元素。

您的array字段存储切片而不是地图,因此您需要实现自己的代码,以您需要的方式重新生成该切片并将其替换为文档,例如:

Lobby := map[string]interface{} {
    "table_id" : "new table id",
    "Status"   : true,
    "name"     : "shivam",
    "array"    : []interface{}{0,1,3},
}

new_slice, err := change_my_slice(Lobby["array"])
if err != nil {
    log.Errorf("Error message goes here")
    return nil, err
}
Lobby["array"] = new_slice

result, err := client.Collection("lobbies").Doc("12").Set(ctx,Lobby,firestore.MergeAll)