我有如下功能。
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`
实际上只会替换整个用户通知对象。
答案 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。