【问题标题】:How can I set multiple attributes on a firebase object?如何在 firebase 对象上设置多个属性?
【发布时间】:2016-08-24 14:49:30
【问题描述】:

我正在使用一个名为 redux-firebasev3 的库对 firebase 进行三个单独的集合调用。

for(let object of array) {
    ....
    firebase.set(`/object/${id}/attr1`, attr1);
    firebase.set(`/object/${id}/attr2`, attr2);
    firebase.set(`/object/${id}/attr3`, attr3);
}

数组的长度为 32。当它到达最后一个对象的第 8 个时,chrome 开发工具冻结并崩溃。有没有更好的方法让我打这些电话?失败的原因可能是什么?我看不到错误,因为开发工具崩溃了。

Here is the link to set function in the library.

【问题讨论】:

    标签: javascript reactjs firebase redux firebase-realtime-database


    【解决方案1】:

    不确定我是否理解正确,但您在寻找这个吗?

    firebase.set(`/object/${id}`, { attr1: attr1, , attr2: attr2, attr3: attr3 });
    

    【讨论】:

    • 是的,我只是想要更好地拨打三个电话的建议。希望它可以加快速度并减少崩溃的可能性。
    • 这是否会覆盖对象上的其他属性。假设它有一个属性 4,你不需要设置它。这个调用之后会不会只有三个属性?
    • 由于Firebase pipelines these requests,您从组合调用中获得的加速将是最小的。但是更新将在线上是原子的,这意味着向上 attr1 无效(根据您的安全规则),整个 set() 在我的变体中将失败。
    • 是的,调用set() 将覆盖该位置的所有数据。如果要更新属性,请致电update()。我强烈建议您查看Firebase's JavaScript guidreference docs,它们涵盖了很多此类情况。
    • 感谢您的帮助,弗兰克!
    【解决方案2】:

    免责声明:我是redux-firebasev3的作者之一

    不确定我是否理解原始问题,但要澄清一下:

    一次性在一个对象中设置多个属性:

    firebase.set(`/object/${id}`, { attr1: "some val", attr2: "some string", attr3: "some other" });

    要将多个属性设置为多个单独的位置:

    firebase.set(`/messages/${id}`, { attr1: "some val", attr2: "some string" }) firebase.set(`/objects/${id}`, { attr1: "some val", attr2: "some string" })

    要设置更新现有路径

    firebase.update(`/messages/${id}`, { attr1: "some val", attr2: "some string" })

    我们的目标是尽可能将库作为 closley mirror the Firebase API,包括设置和更新等内容。

    回购现在包括像simple example这样的例子

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      相关资源
      最近更新 更多