在云功能中查询和更新实时数据库

时间:2018-10-05 16:43:41

标签: firebase

我目前正在执行的特定Firebase Cloud Function遇到麻烦。

简而言之,该功能应该查询“我的实时数据库”中的特定孩子。运行一些逻辑,并在需要时更新孩子的值。最后,该函数应将更改后的值更新回数据库。看起来足够简单和直接,但是我在将更新推回数据库时遇到了一些麻烦。

我的数据目前的结构如下:我有一个“用户”参考,其中存储了所有用户数据,然后将每个用户存储在一个推键中,如下所示 大家好,我是Firebase的新手,但是我很快就开始学习,到目前为止,到目前为止,它对它的功能一直非常满意。尽管我目前正在实施的特定Firebase Cloud Function遇到麻烦。

简而言之,该功能应该查询“我的实时数据库”中的特定孩子。运行一些逻辑,并在需要时更新孩子的值。最后,该函数应将更改后的值更新回数据库。看起来足够简单和直接,但是我在将更新推回数据库时遇到了一些麻烦。

我的数据目前的结构如下:我有一个“用户”参考,其中存储了所有用户数据,然后每个用户都存储在一个推键中,如下所示:

{
  "Users" : {
      "-LM2eHeUZ4gQJL78KkD7" : {
        "closedRequests" : [ "EMPTY" ],
        "firstName" : "LeBron",
        "lastName" : "James",
        "rejectedRequests" : [ "EMPTY" ]
      },
      "-LMiCuI_ORunlMCscBPL" : {
        "closedRequests" : [ "EMPTY" ],
        "firstName" : "Victory",
        "lastName" : "Jackson"
    }
  }` 

当我尝试对我的云功能中的数据库进行查询时:

ref.child('Users').orderByChild('userID').equalTo(req.body.data.snowAngelID).once('value')

我能够在运行snapShot.val()方法返回并获得如下对象的情况下获得快照:

"-LM2eHeUZ4gQJL78KkD7" : {
  "closedRequests" : [ "EMPTY" ],
  "firstName" : "Buhle",
  "lastName" : "Mwanza",
  "rejectedRequests" : [ "EMPTY" ],
}

我显然不需要那里的-LM2eHeUZ4gQJL78KkD7键,因为我想访问实际的原始数据。为此,我正在使用Object.keys()方法跳过按键以获取真实数据。这是我遇到的第一个问题。有没有一种方法可以更改我的查询,使其仅在没有按键的情况下获取我的实际数据?我尝试添加一些通配符,例如ref.child('Users/{wildcard}'),但是查询返回null

此外,当我尝试调用snapShot.ref.update(objectObject)时,它不会更新正在数据库中处理的特定对象内的子值,而是将这些字段添加到对象的外面。 / p>

如果有人可以帮助我,我将不胜感激。提前非常感谢 消息输入

消息#功能

0 个答案:

没有答案