Firebase管理员:如何宣传推送操作

时间:2018-04-19 09:23:39

标签: javascript firebase firebase-realtime-database es6-promise

我有如下功能。

const notify = function (uid, ..., senderId) {
    var obj = {
        "time": +new Date(),
        ... ...
        "uid": senderId,
    }
    dbRef("../notifications/").push(obj);
}

我在其他函数中调用此函数来编写通知,这在其他函数中被调用,这些函数返回promises,这些函数被放入一个数组中以等待所有承诺的实现。

所以我希望这回复一个承诺,而不是使用完整的回调,你知道,就像db.set()一样。

为什么我“不使用db.set()

结构。

users/{uid}/notifications/autoId/notificationObject.

db.ref('users/{uid}/notifications').push(notificationObject)将遵守上述内容,而set()将执行以下操作。

`users/{uid}/notifications/notificationObject`

实际上只会替换整个用户通知对象。

1 个答案:

答案 0 :(得分:4)

有多种方法可以编写push()函数,例如您的问题:

dbRef("../notifications/").push(obj);

其中一个选项使用set(),如下所示:

dbRef("../notifications/").push().set(obj);

这实际上是以下几点:

//Generate the unique push key and get the reference
var key = dbRef("../notifications/").push();
//Save the data to the newly generated reference
key.set(obj);

这个答案中的所有三个代码块完全相同。有关这些保存方式的更多信息,请参阅the Firebase docs