【问题标题】:Does Firebase charge multiple writes on the same update?Firebase 是否对同一更新收取多次写入费用?
【发布时间】:2020-10-03 21:37:32
【问题描述】:

这可能是一个微不足道的问题,但我正在尝试最小化我在 Firebase 应用中的写入操作,并希望检查我当前的代码。假设我有一个如下所示的 Firebase 集合:

conversations
  - someConversationId (<--document)
    - someMessageId1 (<-- object within document)
      - text: "Hey, what's up?",
      - dateSent: new Date(2020, 1, 1),
      - sentBy: "someonesUserId"
    - someMessageId2 (<-- object within document)
      - text: "Not much",
      - dateSent: new Date(2020, 1, 2),
      - sentBy: "someoneElsesUserId"

在这种情况下,messageIdkeyvalue 是具有多个属性的 object

有几种方法可以更新上述文档。考虑以下两个:

firebase.firestore().collection("conversations").doc("conversationId").update({
  someMessageId1: {
    text: "New text",
    dateSent: new Date(2020, 1, 2),
    sentBy: "someNewUserId"
});


firebase.firestore().collection("conversations").doc("conversationId").update({
  someMessageId1.text: "New text",
  someMessageId1.dateSent: new Date(2020, 1, 2),
  someMessageId1.sentBy: "someNewUserId"
});

我的假设是这两种方法都会导致 1 次写入操作。是这样吗?

我为什么要问这个

我有一个文档,其中包含一个对象。例如,在那个对象中有 5-10 个属性。我希望能够在不覆盖整个对象的情况下覆盖对象中的一些属性,因为在前端我只知道我要更新的属性中的 2-3 个,而我想保留其余的属性。上面的第一种方法将覆盖整个对象并只保留 3 个属性,而其他属性将被删除(我认为?)。第二种方法只会覆盖指定的 3 个属性,并且对象上的任何其他属性都将保留。但是我想知道在这种情况下我将执行多少次写入操作,并且如果上面的第二种方法算作 3 次写入,我可能会重新排列我的数据库结构。谢谢!

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    每次更新更改了多少字段,或者您表示应该更新这些字段的方式都没有关系。每次调用 update() 时,它仍然只是写一个文档,需要写一次。

    【讨论】:

      猜你喜欢
      • 2018-11-21
      • 2020-10-22
      • 2020-06-17
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 2022-10-26
      相关资源
      最近更新 更多