Hes*_*uew 0 javascript firebase google-cloud-firestore
嘿,我刚刚更新了我的项目以使用 Firebase 版本 9 模块化。现在,在重构代码之后,我想知道哪种方法可以获得所需的结果:
有一个文档有几个必填字段(比如说:姓名、姓氏)。现在我想添加/更新该文档,但它有多个不需要的字段。
实现这一目标的最佳实践是什么?有条件地添加/更新 [1] 或使用“ignoreUndefinedProperties”[2]?
[1] 有条件添加/更新...
if(address){
await updateDoc(
doc(db, collection, id), {
name,
lastName,
address,
})
} else {
await updateDoc(
doc(db, collection, id), {
name,
lastName,
})
}
Run Code Online (Sandbox Code Playgroud)
[2] 忽略未定义的属性...
另外,我找不到有关如何在新版本中使用“ignoreUndefinedProperties”的文档,因此有人可以指导我正确使用。
编辑(这(添加编辑)也是继续并解决我的问题的最佳方式吗?我是新手,所以我也在寻找 StackOverflow 最佳实践)
我正在测试所需的值,但我该如何处理不需要的值?
我有多个集合并对它们进行了 +20 次调用,其中许多只需要 2-4 个值,而可能有 20 个不需要的值。
这样,如果任何不需要的值未定义并且在 updateDoc() 中,我会收到以下错误...
Function updateDoc() called with invalid data. Unsupported field value: undefined (found in field exampleNotRequiredValue in document ...)
Run Code Online (Sandbox Code Playgroud)
因此,对于这种情况,最好
[1] 检查值是否未定义,在这种情况下将它们添加到更新对象
[2] 使用ignoreUndefinedProperties(因为这不是此设置的重点,这不会自动执行此检查而且我不需要改变很多功能?)
"ignoreUndefinedProperties"可能不是最好的选择。如果名称是必需的但由于任何原因未定义,则不会将其写入文档。您可以编写安全规则来检查name和nickname字段是否存在,但最好有条件地将字段添加到更新对象并确保所需字段存在。
如果您想使用,则ignoreUndefinedProperties必须使用:initializeFirestoregetFirestore
import { initializeFirestore } from "firebase/firestore"
const db = initializeFirestore(app, {ignoreUndefinedProperties: true})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2271 次 |
| 最近记录: |