我有一组记录,我想永久地按顺序更新。基本上是:
以下是我在使用Firebase时的想法:
// update record function
var updateRecord = function() {
// get least recently updated record
firebaseOOO.limit(1).once('value', function(snapshot) {
key = _.keys(snapshot.val())[0];
/*
* do 1-5 seconds of non-Firebase processing here
*/
snapshot.ref().child(key).transaction(
// update record
function(data) {
return updatedData;
},
// update priority after commit (would like to do it in transaction)
function(error, committed, snap2) {
snap2.ref().setPriority(snap2.dateUpdated);
}
);
});
};
// listen whenever priority changes (aka. new item needs processing)
firebaseOOO.on('child_moved', function(snapshot) {
updateRecord();
});
// kick off the whole thing
updateRecord();
这是否合理?
答案 0 :(得分:1)
通常,这种类型的守护程序正是设想与Firebase NodeJS客户端一起使用的守护程序。所以,这种方法看起来不错。
但是,在on()
调用中,您似乎正在删除正在传递的snapshot
。这可能是针对您正在执行的操作的应用程序,但与snapshot
中发生的once()
相比,使用updateRecord()
会更有效。