首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >v9最佳实践: ignoreUndefinedProperties与条件addDoc/updateDoc

v9最佳实践: ignoreUndefinedProperties与条件addDoc/updateDoc
EN

Stack Overflow用户
提问于 2021-09-01 13:27:23
回答 1查看 1.5K关注 0票数 0

嘿,我刚刚更新了我的项目,使用Firebase版本9模块。现在,在重构代码之后,我想知道哪种方法可以获得预期的结果:

有一个文档有两个必需的字段(比如: name,lastName)。现在我想添加/更新该文档,但是它有多个不需要的字段。

实现这一点的最佳实践是什么?有条件地添加/更新1或使用"ignoreUndefinedProperties“2

1有条件添加/更新..。

代码语言:javascript
复制
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()中.

代码语言:javascript
复制
Function updateDoc() called with invalid data. Unsupported field value: undefined (found in field exampleNotRequiredValue in document ...)

所以对这件案子来说

1检查值是否未定义,并在这种情况下将它们添加到update对象

2使用ignoreUndefinedProperties (因为这不是这个设置的重点,这不是自动检查吗,我不需要更改许多函数?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-01 13:33:30

"ignoreUndefinedProperties"可能不是最好的选择。如果名称是必需的,但由于任何原因没有定义,那么它将不会被写入文档。您可以编写安全规则,检查namenickname字段是否存在,但最好有条件地向update对象添加字段,并确保需要的字段存在。

如果您想使用ignoreUndefinedProperties,则必须使用initializeFirestore而不是getFirestore

代码语言:javascript
复制
import { initializeFirestore } from "firebase/firestore"

const db = initializeFirestore(app, {ignoreUndefinedProperties: true})
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69014671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档