使用NodeJS自触发永久运行Firebase进程

时间:2013-04-23 01:31:34

标签: javascript node.js firebase

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

  1. 获取最近最新更新的记录
  2. 更新记录
  3. 将记录日期设置为现在(也就是将其发送到列表的后面)
  4. 返回第1步
  5. 以下是我在使用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();
    

    这是否合理?

1 个答案:

答案 0 :(得分:1)

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

但是,在on()调用中,您似乎正在删除正在传递的snapshot。这可能是针对您正在执行的操作的应用程序,但与snapshot中发生的once()相比,使用updateRecord()会更有效。