通过node.js代码 开启定时任务,客户端连接数据库完成数据同步功能

 之前做了一个功能,要求使用js代码,在客户端开启一个定时任务,连接数据库获取数据传递到后台,完成数据同步,以前都不知道,居然用js代码也可以连接数据库,下面代码只需要将数据库表名等地方替换成自己的,还有执行的sql等,数据的名字等等,都换成自己的就可以使用;使用的方法也很简单,只要:

在cmd中找到node.js文件的位置

输入node 文件名.js;就可以进行测试效果了,后期使用的话封装成一个方法搬到项目中就行了

自己看看代码,需要替换的地方都用中文注明了

function syncDataEvent () {
  // 在读取数据的外部创建定时任务
// 引用node-schedule 模块
  const schedule = require('node-schedule')
  // 导入express模块
  const express = require('express')
  var req = require('request')
  const chalk = require('chalk')
  const axios = require('axios')

  const https = require('https')
  // 实例化一个express对象
  const app = express()

  // 定义定时规则
  const rule = new schedule.RecurrenceRule()
  // 每分钟的0秒执行
  // rule.second = 0;
  // 下面几种定时规则可自行选择
  // 每小时的几分执行
  // rule.minute = 11;
  // 每隔 10 秒执行一次
  rule.second = [0, 10, 20, 30, 40, 50]
  // rule.date = [1];//每月1号
  // rule.dayOfWeek = [1,3,5];每周一、周三、周五
  // rule.hour = [0,12]; // 每天0点和12点开始推送
  // rule.minute = [0,5,10,15,20,25,30,35,40,45,50,55]; // 每隔 5 分钟执行一次
  // 启动任务
  const job = schedule.scheduleJob(rule, () => {
    console.log(new Date())
    dbConnection()
  })
  function dbConnection () {
    // 引用mysql
    var mysql = require('mysql')

    // 建立与数据库流水表的连接
    var connection = mysql.createConnection({
      host: '数据库名',
      user: '用户名',
      password: '密码',
      database: '表名'
    })

    // 创建待同步表的连接
    var connection1 = mysql.createConnection({
      host: '数据库名',
      user: '用户名',
      password: '密码',
      database: '表名'
    })

    // 执行数据库连接
    connection.connect()

    var sqlstring = ''
    var sqlstring1 = ''
    let rs = ''

    // 查询数据   注意,由于没有最新数据,所以先使用最旧的数据

    sqlstring1 = "执行的sql语句"
    // 执行下面的方法,如果成功则返回result查询结果集,如果执行失败,则返回错误信息并停止
    console.log(sqlstring1)
    connection1.query(sqlstring1, function (err, result) {
      if (err) {
        console.log('[SELECT ERROR] - ', err.message)
        return
      }
      rs = JSON.stringify(result)
      console.log('str' + rs)

      // 对查到的结果进行分割
      rs = rs.replace('[', '')
      rs = rs.replace(']', '')
      console.log('parse' + rs)

      rs = JSON.parse(rs)

      // 此处应该写连接后台的代码,将查到的数据传递到后台,前端的任务就是完成了
      // 对时间格式进行转换
      // rs = new Date(rs);
      // let currDate = dayjs(rs).format('YYYY-MM-DD HH:mm:ss');

      // console.log('傻子',sd.format(new Date(rs), 'YYYY-MM-DD HH:mm:ss'));

      // 下句是发送响应数据   response 不能重复,而定时任务会重复执行,所以先注释
      // sqlstring = "执行的sql语句";
      const times = rs.create_time
      console.log('---times---', times)
      // sqlstring = "select sinopecnodeno,macno,ttc,cardno,machineoilno,oilno,takedate,ctc,oilgunno,openo,liter,price,amount,balance,pumpno,tac,gmac,psam_tac,psam_asn,terminalno,psam_ttc,moneysou,paymode,payunit,t_mac,accountdate,tracode,gettime,key_version,key_index from sm_oilvouch where  takedate  > '"+times+"' ORDER BY takedate desc";

      sqlstring = "执行的sql语句"

      console.log(sqlstring)
      connection.query(sqlstring, function (err, result1) {
        if (err) {
          console.log('[SELECT ERROR] - ', err.message)
          return
        }
        const list = JSON.stringify(result1)

        console.log('查询的结果-------------', list)
        // 发送请求

        req.post({ url: '数据传输的后台地址', formData: { list: list } }, function optionalCallback (err, httpResponse, body) {
          // body为url反馈回来的数据,
        })
      })

      // response.end(rs);

      // 断开数据库连接
      connection.end()
      connection1.end()
    })
  }
}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值