博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HAVENT原创】Firebase 定时任务遍历删除子节点
阅读量:7013 次
发布时间:2019-06-28

本文共 3513 字,大约阅读时间需要 11 分钟。

  hot3.png

每周定时执行,遍历 Firebase 数据库,删除过期的节点:

var config = require('./config.json');var admin = require('firebase-admin');var schedule = require('node-schedule');var log4js = require('log4js');log4js.configure({ // configure to use all types in different files.    appenders: [        {   type: 'file',            filename: config.firebase.log,            category: 'service',            maxLogSize: 20480000,            backups: 10        }    ]});var logger = log4js.getLogger('service');var mysql = require('mysql');var pool = mysql.createPool({    connectionLimit: 10,    host: config.mysql.host,    user: config.mysql.user,    password: config.mysql.password,    database: config.mysql.db});var defaultAppConfig = {    credential: admin.credential.cert(config.firebase.cert),    databaseURL: config.firebase.databaseURL};var defaultAppName = 'GoPeople-NodeJS-Admin';var defaultApp = admin.initializeApp(defaultAppConfig, defaultAppName);var isWorking = false;var hasMoreData = true;function init() {    logger.info('People Post remove signatures service start.');    // '0 0 0 * * 6' Saturday 00:00:00    // '*/5 * * * *' per 5 min    // '*/30 * * * * *' per 30 sec    var weekTask = schedule.scheduleJob('11 34 11 * * 2', function () {        logger.info('schedule week task start!');        var j = schedule.scheduleJob('*/30 * * * * *', function(){            startRemoveSignatures();            if(!hasMoreData){                logger.info('schedule task finished!');                logger.info();                logger.info();                schedule.cancelJob(j);            }        });    });}function startRemoveSignatures() {    var expiredDataCount = 0;    if(isWorking){        logger.info('startRemoveSignatures: hold on ...');        return;    }else{        isWorking = true;        logger.info();        logger.info('startRemoveSignatures: loading signatures data ...');    }    var signaturesRef = defaultApp.database().ref('signatures');    //signaturesRef.orderByChild("isChecked").equalTo(true).limitToLast(300).once("value")    signaturesRef.orderByChild("timestamp").limitToFirst(50).once("value")        .then(function(snapshot) {            snapshot.forEach(function(childSnapshot) {                var key = childSnapshot.key;                var childData = childSnapshot.val();                var now = new Date();                var date = new Date(childData.date);                var dayDiff = parseInt((now - date) / (1000 * 60 * 60 * 24)); // day diff                if(dayDiff > 7){                    expiredDataCount++;                    signaturesRef.child(key).remove(function(error) {                        console.log(key);                        console.log(dayDiff);                        console.log(error ? ("Uh oh! " + error) : "Success!");                        logger.info(key);                        if(error){                            logger.error(error);                        }else{                            logger.info("Success! [ " + dayDiff + ' day ]');                        }                    });                }else{                    console.log(key);                    console.log(dayDiff);                    logger.info(key);                    logger.info("Jump!");                }            });            isWorking = false;            logger.info('expiredDataCount: ' + expiredDataCount);            if(expiredDataCount < 30){                hasMoreData = false;            }        });}init();

 

转载于:https://my.oschina.net/u/943746/blog/1832913

你可能感兴趣的文章
【夯实Mysql基础】记一次mysql语句的优化过程
查看>>
VBPR: Visual Bayesian Personalized Ranking from Implicit Feedback-AAAI2016 -20160422
查看>>
servlet injection analysis
查看>>
(原)centos7安装和使用greenplum4.3.12(详细版)
查看>>
Hive之 hive与hadoop的联系
查看>>
java中的==、equals()、hashCode()源码分析
查看>>
HDU 3613 Best Reward 正反两次扩展KMP
查看>>
zepto.js 源码解析
查看>>
HTTP状态码大全
查看>>
使用ASP.NET Web API 2创建OData v4 终结点
查看>>
MyBatis简单的增删改查以及简单的分页查询实现
查看>>
Android快捷支付SDK Demo resultStatus={4001};memo={參数错误};result={}问题
查看>>
urllib2中自定义opener
查看>>
Hadoop快速入门
查看>>
MySql_安装及简单命令
查看>>
CSDN markdown 编辑器 第四篇 LaTex语法
查看>>
mongodb 初学 索引
查看>>
每日一小练——二项式系数加法解
查看>>
django中的setting全局变量的导入
查看>>
常见的几种Flume日志收集场景实战
查看>>