当前位置: 首页 > news >正文

网站不收录网站建设设计费会计分录

网站不收录,网站建设设计费会计分录,活动策划模板,网站定制报价钻石有价#xff0c;数据无价。我们通常会把重要的业务数据存放在数据库中#xff0c;并需要对数据库做定时的自动备份工作#xff0c;防止数据异常丢失#xff0c;造成无法挽回的损失。小程序云开发提供了方便的云数据库供我们直接使用#xff0c;云开发使用了腾讯云提供… 钻石有价数据无价。我们通常会把重要的业务数据存放在数据库中并需要对数据库做定时的自动备份工作防止数据异常丢失造成无法挽回的损失。小程序云开发提供了方便的云数据库供我们直接使用云开发使用了腾讯云提供的云数据库拥有完善的数据保障机制无需担心数据丢失。但是我们还是不可避免的会担心数据库中数据的安全比如不小心删除了数据集合写入了脏数据等。还好云开发控制台提供了数据集合的导出导入功能我们可以手动备份数据库。不过总是手动备份数据库也太麻烦了点所有重复的事情都应该让代码去解决下面我们就说说怎么搞定云开发数据库自动备份。通过查阅微信的文档可以发现云开发提供了数据导出接口databaseMigrateExportPOST https://api.weixin.qq.com/tcb/databasemigrateexport?access_tokenACCESS_TOKEN通过这个接口结合云函数的定时触发功能我们就可以做数据库定时自动备份了。梳理一下大致的流程(1)创建一个定时触发的云函数。(2)云函数调用接口导出数据库备份文件。(3)将备份文件上传到云存储中以供使用。获取 access_token调用微信的接口需要 accesstoken所以我们首先要获取 accesstoken。通过文档了解到使用 auth.getAccessToken 接口可以用小程序的 appid 和 secret 获取 access_token。// 获取 access_tokenrequest.get( https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credentialappid${appid}secret${secret}, (err, res, body) { if (err) { // 处理错误 return; } const data JSON.parse(body); // data.access_token });创建数据库导出任务获取 access_token 后就可以使用 databaseMigrateExport 接口导出数据进行备份。databaseMigrateExport 接口会创建一个数据库导出任务并返回一个 jobid这个 jobid 怎么用我们下面再说。显然数据库的数据导出并不是同步的而是需要一定时间的数据量越大导出所要花费的时间就越多个人实测2W 条记录2M 大小导出大概需要 3~5 S。调用 databaseMigrateExport 接口需要传入环境 Id存储文件路径导出文件类型(1 为 JSON2 为 CSV)以及一个 query 查询语句。因为我们是做数据库备份所以这里就导出 JSON 类型的数据兼容性更好。需要备份的数据可以用 query 来约束这里还是很灵活的既可以是整个集合的数据也可以是指定的部分数据这里我们就使用 db.collection(data).get() 备份 data 集合的全部数据。同时我们使用当前时间作为文件名方便以后使用时查找。request.post( https://api.weixin.qq.com/tcb/databasemigrateexport?access_token${accessToken}, { body: JSON.stringify({ env, file_path: ${date}.json, file_type: 1, query: db.collection(data).get() }) }, (err, res, body) { if (err) { // 处理错误 return; } const data JSON.parse(body); // data.job_id });查询任务状态获取文件地址在创建号数据库导出任务后我们会得到一个 job_id如果导出集合比较大就会花费较长时间这时我们可以使用 databaseMigrateQueryInfo 接口查询数据库导出的进度。当导出完成后会返回一个 file_url即可以下载数据库导出文件的临时链接。request.post( https://api.weixin.qq.com/tcb/databasemigratequeryinfo?access_token${accessToken}, { body: JSON.stringify({ env, job_id: jobId }) }, (err, res, body) { if (err) { reject(err); } const data JSON.parse(body); // data.file_url });获取到文件下载链接之后我们可以将文件下载下来存入到自己的云存储中做备份使用。如果不需要长时间的保留备份就可以不用下载文件只需要将 jobid 存储起来当需要恢复备份的时候通过 jobid 查询到新的链接下载数据恢复即可。至于 job_id 存在哪就看个人想法了这里就选择存放在数据库里。await db.collection(db_back_info).add({ data: { date: new Date(), jobId: job_id }});函数定时触发器云函数支持定时触发器可以按照设定的时间自动执行。云开发的定时触发器采用的 Cron 表达式语法最大精度可以做的秒级详细的使用方法可以参考官方文档定时触发器 | 微信开放文档这里我们配置函数每天凌晨 2 点触发这样就可以每天都对数据库进行备份。在云函数目录下新建 config.json文件写入如下内容{ triggers: [ { name: dbTrigger, type: timer, config: 0 0 2 * * * * } ]}完整代码在源码基础上只需要创建一个定时触发的云函数并设置好相关的环境变量即可使用appidsecretbackupColl需要备份的集合名称如 ‘data’backupInfoColl存储备份信息的集合名称如 ‘dbbackinfo’注意云函数的默认超时时间是 3 秒创建备份函数时建议将超时时间设定到最大值 20S留有足够的时间查询任务结果。/* eslint-disable */const request require(request);const cloud require(wx-server-sdk);// 环境变量const env xxxx;cloud.init({ env});// 换取 access_tokenasync function getAccessToken(appid, secret) { return new Promise((resolve, reject) { request.get( https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credentialappid${appid}secret${secret}, (err, res, body) { if (err) { reject(err); return; } resolve(JSON.parse(body)); } ); });}// 创建导出任务async function createExportJob(accessToken, collection) { const date new Date().toISOString(); return new Promise((resolve, reject) { request.post( https://api.weixin.qq.com/tcb/databasemigrateexport?access_token${accessToken}, { body: JSON.stringify({ env, file_path: ${date}.json, file_type: 1, query: db.collection(${collection}).get() }) }, (err, res, body) { if (err) { reject(err); } resolve(JSON.parse(body)); } ); });}// 查询导出任务状态async function waitJobFinished(accessToken, jobId) { return new Promise((resolve, reject) { // 轮训任务状态 const timer setInterval(() { request.post( https://api.weixin.qq.com/tcb/databasemigratequeryinfo?access_token${accessToken}, { body: JSON.stringify({ env, job_id: jobId }) }, (err, res, body) { if (err) { reject(err); } const { status, file_url } JSON.parse(body); console.log(查询); if (status success) { clearInterval(timer); resolve(file_url); } } ); }, 500); });}exports.main async (event, context) { // 从云函数环境变量中读取 appid 和 secret 以及数据集合 const { appid, secret, backupColl, backupInfoColl } process.env; const db cloud.database(); try { // 获取 access_token const { errmsg, access_token } await getAccessToken(appid, secret); if (errmsg errcode ! 0) { throw new Error(获取 access_token 失败${errmsg} || 获取 access_token 为空); } // 导出数据库 const { errmsg: jobErrMsg, errcode: jobErrCode, job_id } await createExportJob(access_token, backupColl); // 打印到日志中 console.log(job_id); if (jobErrCode ! 0) { throw new Error(创建数据库备份任务失败${jobErrMsg}); } // 将任务数据存入数据库 const res await db.collection(db_back_info).add({ data: { date: new Date(), jobId: job_id } }); // 等待任务完成 const fileUrl await waitJobFinished(access_token, job_id); console.log(导出成功, fileUrl); // 存储到数据库 await db .collection(backupInfoColl) .doc(res._id) .update({ data: { fileUrl } }); } catch (e) { throw new Error(导出数据库异常${e.message}); }};海量云开发实☁ 往期精彩 点击下方图片即可阅读云开发 · 不止于「快」云开发Tencent CloudBase      点击在看让更多人发现精彩
http://www.zqtcl.cn/news/517651/

相关文章:

  • 网站建设什么是静态网页设置wordpress文章标题高亮的代码
  • 男女做那事是什 网站wordpress怎么上传ppt
  • 电商网站图片处理东莞网络营销策划
  • 做知识产权相关的网站网站怎么做登录界面
  • 网站空间备份东莞企业网站教程
  • 新桥企业网站建设有关网站建设的毕业设计
  • 中山网站建设工作修改wordpress后台地址
  • 西安app网站开发如何制作一个自己的网页
  • 陇西学做网站鄂州网约车
  • 做类似58类型网站免费源码分享
  • 个人做的网站有什么危险网站模板怎样发布
  • 设计建设网站公司网站wordpress k2
  • 公司网站被抄袭网络宣传
  • 企业网站设计收费专业网络推广公司排名
  • 视频网站模板源码深圳网站建设明细报价表
  • nike官方网站定制二级域名网站有哪些
  • 越秀移动网站建设房门户网站如何做优化
  • 什么软件可以做动漫视频网站开发一个小程序大概要多少钱
  • 微网站可以做成域名访问株洲网站做的好的公司
  • 建设网站去工信部备案需要什么资料网站建设相关博客
  • 十度网站建设网站建立的企业
  • 婚庆公司网站国外网站阻止国内访问怎么做
  • 乐山高端网站建设wordpress openload
  • 哪些网站上可以做租车深圳品牌网站开发
  • 乐清网站改版公司西安网站建设公司哪家好
  • 国外小型网站1688货源网下载
  • 浏览量最大的网站网站导航栏目设计内容依据
  • 户外拓展公司网站开发桂林网站开发
  • 怎么入侵网站后台互联网营销师含金量
  • 网站建设ningqueseo济南网站建设服务