标签:函数 res 数据库 函数调用 存入 json 接口 data
小程序云开发云函数调用外部接口获取疫情数据并存入云数据库
最近学的小程序的云开发,刚刚处理好了云函数去调用外部接口获得数据并存库的功能,乘着记得,记录一下。
直接放结果代码,结构很简单,看的懂的直接看,看不懂的后面有代码解释:
//云函数主体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 * * * *"
}
]
}
下方是说明啦
说明:
-
接口:
我用的新浪的防疫地图接口新浪防疫数据json接口 -
数据库:
将上方的json文件下载下来后,导入到云数据库中,我们便直接拥有了这个json结构的数据库,以及初始数据。后面我们只要定时更新这些数据就行了。
( 记住下面的 _id,后面我们更新数据要使用的。)
-
更新:
更新分为爬取和存库
爬取:
函数开头我们声明我们的接口url
用request-promise库(rp)调用接口拿到数据(此时还是纯文档的),数据在res里。
用JSON.parse(res)将返回的数据(文本)转换为JSON数据集。
存库
因为代码少而且直接,我就直接按顺序解释代码了。
创建云数据库实例db
更新云数据库的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秒
调用函数
而今早的确定的时候确确实实按计划更新了(服务器有时间差不计)
微信官方的文档和视频都很详细,个人推荐多去啃一啃,此文只写一下个人的经验。
标签:函数,res,数据库,函数调用,存入,json,接口,data 来源: https://blog.csdn.net/mazula/article/details/115614631
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。