Firestore-将数组传递给arrayUnion()

时间:2018-11-11 19:15:37

标签: javascript firebase google-cloud-firestore

如何将数组传递到Firebase Firestore arrayUnion() function

尝试传递数组时出现此错误。

错误

Error: 3 INVALID_ARGUMENT: Cannot convert an array value in an array value.

示例

let myArray = ["1", "2", "3"];

docRef.update({
    test: firebase.firestore.FieldValue.arrayUnion(myArray)
});

1 个答案:

答案 0 :(得分:2)

我最终找到了在另一个Function.prototype.apply()中使用stack overflow answer的答案。

Function.prototype.apply()的示例

let myArray = ["1", "2", "3"];

docRef.update({
    test: firebase.firestore.FieldValue.arrayUnion.apply(this, myArray)
});

ECMAScript 6示例

使用spread argument

let myArray = ["1", "2", "3"];

docRef.update({
    test: firebase.firestore.FieldValue.arrayUnion(...myArray)
});

使用上述任何一种方法传递数组时,Firestore只会将新数组元素添加到Firestore数组中尚不存在的新元素。

例如,运行上面的代码,然后运行以下的代码

let myArray = ["2", "3", "5", "7"];

docRef.update({
    test: firebase.firestore.FieldValue.arrayUnion(...myArray)
});

只会在Firestore中向数组添加“ 5”和“ 7”。这也适用于对象数组。