1

我有一组记录,我想永久按顺序更新。基本上:

  1. 获取最近最少更新的记录
  2. 更新记录
  3. 将记录日期设置为现在(又名。将其发送到列表的后面)
  4. 返回步骤 1

这是我使用 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();

这是合理的做法吗?

4

1 回答 1

1

一般来说,这种类型的守护进程正是设想与 Firebase NodeJS 客户端一起使用的。所以,这个方法看起来不错。

但是,在on()通话中,您似乎正在将snapshot正在传递的内容放在地板上。这可能是特定于您正在做的事情的应用程序,但snapshotonce()对于updateRecord().

于 2013-04-23T20:46:06.330 回答