node.js - Firebase 云函数 firestore 数组 union
问题描述
我无法让数组联合或增量在 firebase 云功能中正常工作。
return docRef.update({
object: {
count: admin.firestore.FieldValue.increment(1),
list: admin.firestore.FieldValue.arrayUnion({
space_id: newData.date_id,
user: {
displayName: "john doe"
}
})
}
当函数运行时,它只是覆盖列表数组中的现有数据,并且计数始终设置为 1,即使它当前存在并且是数字类型。
解决方案
在您发表评论之后,下面是我尝试过的 HTML 代码。请注意,它不是 Cloud Function 代码(使用 Admin SDK),而是一些使用 JavaScript SDK 的 JavaScript 代码。但很可能 Admin SDK 具有相同的行为。
要尝试它,请执行以下操作:
testSO
在 Firestore 中创建一个集合,并创建一个带有 IDdoc1
和一个虚拟字段的文档。- 将此 HTML 页面保存在您的计算机上并在浏览器中打开它。
- 然后更改值并在浏览器中重新加载页面以试验行为
当与 (field )的字符串数组和 (field ) 的数字一起使用时,您将看到两者都可以工作,但不能与复合arrayUnion
对象一起使用。increment
arrayUnion
array1
increment
count1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Title</title>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-database.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-functions.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.9.3/firebase-firestore.js"></script>
</head>
<body>
<script>
// Initialize Firebase
var config = {
apiKey: 'xxxxxxxxxxx',
authDomain: 'xxxxxxxxxxx',
databaseURL: 'xxxxxxxxxxx',
projectId: 'xxxxxxxxxxx'
};
firebase.initializeApp(config);
var db = firebase.firestore();
db.doc('testSO/doc1').update({
count1: firebase.firestore.FieldValue.increment(1),
array1: firebase.firestore.FieldValue.arrayUnion('arrayItem'),
object: {
count: firebase.firestore.FieldValue.increment(1),
list: firebase.firestore.FieldValue.arrayUnion({
space_id: 'spaceNbr',
user: {
displayName: 'john doe'
}
})
}
});
</script>
</body>
</html>
推荐阅读
- python - AWS Cognito 创建允许多次删除和创建的测试用户
- powershell - 在 PowerShell 中捕获错误代码并跳过命令
- file - 写入文件时,OpenOptions write 无法正常工作
- xcode - pod install 上的重复包
- java - 将字符串数组列表内的字符串元素隐藏为int?(爪哇)
- jenkins - Jenkins - Gitlab 集成如何仅构建 MR 的源分支?
- react-native - 地理围栏,如果应用程序终止,本地通知可以在用户到达公司时推送
- php - 包含日期之间的php碳
- laravel - 获取 vue prop 数组中的最后 X 个项目
- logging - Prolog 比较返回 False