微信公众号开发

小程序云开发云函数调用外部接口获取疫情数据并存入云数据库

本文主要是介绍小程序云开发云函数调用外部接口获取疫情数据并存入云数据库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

小程序云开发云函数调用外部接口获取疫情数据并存入云数据库

最近学的小程序的云开发,刚刚处理好了云函数去调用外部接口获得数据并存库的功能,乘着记得,记录一下。

直接放结果代码,结构很简单,看的懂的直接看,看不懂的后面有代码解释:

//云函数主体js

const cloud = require('wx-server-sdk')
//引入request-promise用于做网络请求
var rp = require('request-promise');
cloud.init()
 
// 云函数入口函数
exports.main = async (event, context) => {
  let url ='https://interface.sina.cn/news/wap/fymap2020_data.d.json';
  return await rp(url)
    .then(function (res) {
      //console.log('res',res)
      var json = JSON.parse(res)
      console.log('json.data',json.data)
      const db = cloud.database()
      db.collection('virus').doc("e050b1a6606fe63600717bbb3af7fbcc")
          .update({
            data:{
              data:json.data
            }
          })
      return res
    })
    .catch(function (err) {
      return '失败'
    });
}

云函数配置文件:config.json

{
  "permissions": {
    "openapi": [
    ]
  },
  "triggers":[
    {
      "name":"updateData",
      "type":"timer",
      "config":"0 0 9 * * * *"
    }
  ]
}

下方是说明啦


说明:

  1. 接口:
    我用的新浪的防疫地图接口新浪防疫数据json接口

  2. 数据库:
    将上方的json文件下载下来后,导入到云数据库中,我们便直接拥有了这个json结构的数据库,以及初始数据。后面我们只要定时更新这些数据就行了。
    ( 记住下面的 _id,后面我们更新数据要使用的。)
    在这里插入图片描述

  3. 更新:

在这里插入图片描述
更新分为爬取和存库

爬取
在这里插入图片描述
函数开头我们声明我们的接口url
在这里插入图片描述
用request-promise库(rp)调用接口拿到数据(此时还是纯文档的),数据在res里。
在这里插入图片描述

用JSON.parse(res)将返回的数据(文本)转换为JSON数据集。
在这里插入图片描述

存库

因为代码少而且直接,我就直接按顺序解释代码了。

创建云数据库实例db在这里插入图片描述

更新云数据库的virus集合
db.collection('virus')

下的 _id为"e050b1a6606fe63600717bbb3af7fbcc"
在这里插入图片描述

的data项
在这里插入图片描述
至此,便是代码的解释。
将重新获取的json数据的data,update到数据库的data下,这一操作便完成了。

验证函数
我们可以用本地函数调用云函数,然后查看数据库数据是否有更新来确认云函数功能是否完善。

// pages/cloudFunctiontest/index.js
Page({

  test(){
    wx.cloud.callFunction({
      name:'requestTest',
    }).then((res)=>{
      var p = JSON.parse(res.result)
      console.log("p.data",p.data)

    }).catch((res)=>{
      console.log(res.result);
    })
  },
})

没有报错在这里插入图片描述
数据库中的数据也更新了
在这里插入图片描述
4. 云函数定时调用
定时器说明可以查看微信小程序官方文档。
也可以直接看视频,简单明了

云开发基础能力展示之云函数定时器的使用

{
  "permissions": {
    "openapi": [
    ]
  },
  "triggers":[
    {
      "name":"updateData",
      "type":"timer",
      "config":"0 0 1 * * * *"
    }
  ]
}

我这边定义的时间是,从右向左:
每年的
每星期的
每月的
每天的
1时
0分
0秒
调用函数
而今早的确定的时候确确实实按计划更新了(服务器有时间差不计)
在这里插入图片描述


微信官方的文档和视频都很详细,个人推荐多去啃一啃,此文只写一下个人的经验。

这篇关于小程序云开发云函数调用外部接口获取疫情数据并存入云数据库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!