2017-07-24 61 views
1

我正在使用Firebase数据库REST API来发布数据。该结构是firebase数据库REST更新数值数据

orders: { 
"milk" : 10, 
"cream" : 13 
} 

我的使用情况是由1递增量看他们为:

orders: { 
    "milk" : 11, 
    "cream" : 14 
    } 

在一般情况下,我看到了两个REST调用:

  1. 做出GET拨打以获取我的客户端中的当前号码
  2. 使用更新后的号码拨打PUT电话

有没有办法做到这一点作为一个单一的调用来增加当前值?

回答

2

如果您使用的是其中一个Firebase SDK,则可以通过交易完成(web)。

目前在REST API中没有等价物,这将允许您一次完成此操作。

您可以考虑的是使用安全规则来确保只允许有效的转换。但是这很容易变得非常棘手,你可以在我的答案中看到:https://stackoverflow.com/a/37956590

0

如果你需要一个HTTP端点可以在实时数据库原子获取和设置一个值,你可以使用Cloud Functions for Firebase来创建使用Admin SDK执行transaction和输出返回给调用者更新的计一个HTTPS trigger

+0

我不需要更新的计数器,但只需要先得到计数器,然后更新它 – Vik

+0

您可以用任何你喜欢的方式编写你的函数。如果您不想返回更新后的值,则不需要这样写。 –

+0

这非常有效!为什么downvote?您可以收听任何Firebase事件,然后使用功能更新计数器。例如,您可以创建另一个节点“user_orders”:{“jwdbawodn”{“item”:“milk”,“UID”:“dawdawd”,“timestamp”:131233412}}。这样,任何用户都可以通过在创建新订单时添加新订单来创建增量,您可以列出并使用函数增加它。这还有一个额外的好处,即您可以快速获取最近的用户活动列表。 – cutiko