收藏
回答

如何利用云函数定时分页请求数据并同步更新云端数据库?

有这样一个需求场景,每天0点定时请求一个远程地址数据,获取订单列表,这个订单列表是需要分页的。请求到订单后,需要针对订单ID,同步更新保存到数据库。

目前可以使用的技术有:云函数提供的定时触发器、request-promise来请求外网数据。

但是针对分页、批量更新订单没有头绪。不知道大家有没有什么好的方案?


// 云函数入口文件
const cloud = require('wx-server-sdk')


//引入request-promise用于做网络请求
var rp = require('request-promise');


cloud.init()


const db = cloud.database();


// 云函数入口函数
exports.main = async(event, context) => {

  var param = {
    'end_update_time': end,
    'start_update_time': start,
    'page_size': 10,
    'page': 1,
    };
    var option = {
      uri: 'xxxx',
      qs: param,
      json: true
    }
    return await rp(option)
      .then(function(res) {
        console.log(res);
        return res
    })
    .catch(function(err) {
      console.log(err);
      return '失败'
    });
}
回答关注问题邀请回答
收藏

2 个回答

  • 郑旭东
    郑旭东
    2020-04-12

    像楼上大佬说的promise应该可以,我自己一般用递归函数来搞定循环多次执行任务

    2020-04-12
    有用
    回复
  • 海兰云天
    海兰云天
    2020-04-12

    分页是远端还是你这边?

    订单的话,尽量不要批量吧,把每个订单的更新创建一个promise,然后Promise.ALL,或者把单个更新写入到队列里.

    2020-04-12
    有用
    回复 4
    • 讓歷史重演
      讓歷史重演
      2020-04-12
      后台接口是分页的,云函数要做分页请求。请求订单的时候,有第二页就请求。
      2020-04-12
      回复
    • 海兰云天
      海兰云天
      2020-04-12回复讓歷史重演
      远端的返回值有页数标识么? 不然你怎么判断是否有第二页
      2020-04-12
      回复
    • 讓歷史重演
      讓歷史重演
      2020-04-12回复海兰云天
      嗯,有总页码。
      2020-04-12
      回复
    • 海兰云天
      海兰云天
      2020-04-12回复讓歷史重演
      那不就可以了, 在你本地数据库或者什么地方,记录一下当前的页码,然后发送请求不就可以了
      2020-04-12
      回复
登录 后发表内容
问题标签