Firestore 无法使用 FieldValue.arrayUnion() 将项目数组合并到另一个数组

Ahm*_*ged 2 arrays firebase typescript google-cloud-functions google-cloud-firestore

我有一个云函数,当某个事件发生时会调用它。在该函数中,我将获得一个字符串数组,例如let h:string[] = ["foo","bar","baz"]与此类似的内容,当我尝试像这样更新文档中的数组字段时, names: admin.firestore.FieldValue.arrayUnion(h)它未能做到这一点并在控制台中抛出该错误

Error: 3 INVALID_ARGUMENT: Cannot convert an array value in an array value.
    at Object.exports.createStatusError (/srv/node_modules/grpc/src/common.js:87:15)
    at Object.onReceiveStatus (/srv/node_modules/grpc/src/client_interceptors.js:1188:28)
    at InterceptingListener._callNext (/srv/node_modules/grpc/src/client_interceptors.js:564:42)
    at InterceptingListener.onReceiveStatus (/srv/node_modules/grpc/src/client_interceptors.js:614:8)
    at callback (/srv/node_modules/grpc/src/client_interceptors.js:841:24)
Run Code Online (Sandbox Code Playgroud)

但是,如果我将代码更改为此 names: admin.firestore.FieldValue.arrayUnion("foo","bar","baz")它可以工作,但在我的函数中,我收到一个不是上述格式的数组,因此它失败

这就是我想要的。我在文档中有一个数组字段,让我们称之为名称。当函数被触发并从中获取数组时。我想将此数组添加到现有的名称数组中

添加数组之前names : ["test","test2"]

添加数组后names : ["test","test2","foo","bar","baz"]

如何解决这个问题?我正在使用打字稿 3.0.1

Dav*_*ayo 5

arrayUnion 函数在定义时有一个数组值,您需要将数组添加到该数组值,在 javascript 或类型上您可以使用 ...(NameArray) 进行联合。

items : any[] = [1,2,4,5,67,8];
admin.firestore.FieldValue.arrayUnion(...items);
Run Code Online (Sandbox Code Playgroud)