嘿,我刚刚更新了我的项目,使用Firebase版本9模块。现在,在重构代码之后,我想知道哪种方法可以获得预期的结果:
有一个文档有两个必需的字段(比如: name,lastName)。现在我想添加/更新该文档,但是它有多个不需要的字段。
实现这一点的最佳实践是什么?有条件地添加/更新1或使用"ignoreUndefinedProperties“2
1有条件添加/更新..。
if(address){
await updateDoc(
doc(db, collection, id), {
name,
lastName,
address,
})
} else {
await updateDoc(
doc(db, collection, id), {
name,
lastName,
})
}2 ignoreUndefinedProperties...
另外,我找不到关于如何在新版本中使用"ignoreUndefinedProperties“的文档,因此有人可以指导我正确使用。
编辑(也是这(添加编辑)继续和完善我的问题的最佳方式?我是新手,所以我也在寻找StackOverflow最佳实践)
我正在测试所需的值,但是应该如何处理不需要的值呢?
我有多个集合和对它们的+20调用,在许多情况下,只需要2-4个值,而可能有20个不需要的值。
这样,如果这些不需要的值中的任何一个是未定义的,并且在updateDoc()中.
Function updateDoc() called with invalid data. Unsupported field value: undefined (found in field exampleNotRequiredValue in document ...)所以对这件案子来说
1检查值是否未定义,并在这种情况下将它们添加到update对象
2使用ignoreUndefinedProperties (因为这不是这个设置的重点,这不是自动检查吗,我不需要更改许多函数?)
发布于 2021-09-01 13:33:30
"ignoreUndefinedProperties"可能不是最好的选择。如果名称是必需的,但由于任何原因没有定义,那么它将不会被写入文档。您可以编写安全规则,检查name和nickname字段是否存在,但最好有条件地向update对象添加字段,并确保需要的字段存在。
如果您想使用ignoreUndefinedProperties,则必须使用initializeFirestore而不是getFirestore
import { initializeFirestore } from "firebase/firestore"
const db = initializeFirestore(app, {ignoreUndefinedProperties: true})https://stackoverflow.com/questions/69014671
复制相似问题