受欢迎的博客标签

微信小程序云开发(33)-小程序云函数-云函数调用后端API获取数据存入云数据库

Published

 

主要思路:
1:建立一个云函数http调用api获取后台信息,得到的是一个json字符串
2:小程序客户端调用云函数获取到后台的信息,并将信息JSON.parse(jsonString)传递到小程序
3:在小程序客户端中 调用云数据库来添加

 

云函数http

index.js

cloudfunctions ---------- root
 ├── http----------  云函数http
    ├── index.js ----------  云函数代码
    └── package.json ---------- 云函数配置文件
 

 

//http://www.cnblogs.com/masterchd/p/9895636.html
//https://github.com/Tencent-CloudEDU/WXCloud-CloudFunctionsHandle/blob/master/cloudfunctions/http/index.js
//需要导入http包,返回的数据在小程序端需要用JSON.parse(res.result) 转为JSON数据

//这个api是根据isbn码访问并获得图书信息的接口

//https://blog.csdn.net/qiushi_1990/article/details/101220920?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

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

//var url="http://isbn.szmesoft.com/ISBN/Query?ISBN= + isbn";
var url="https://api.yourdomain.com/api/ObjectId";

// 云函数入口函数
exports.main = async (event, context) => {
  var isbn = event.isbn
  return new Promise((resolve, reject) => {
    request.get(url, (error, response, body) => {
      if (error) {
        reject()
      } else {
        try {
          resolve(body)
          

          console.log(body)
        } catch (e) {
          reject()
        }
      }
    })
  })
}

 

 

// pages/scanCode/scanCode.js
Page({
  data: {
  },

  scanCode: function (event) {
    console.log(1)
    // 允许从相机和相册扫码
    wx.scanCode({
      onlyFromCamera: true,
      scanType: ['barCode'],
      success: res => {
        console.log(res.result)

        //
        wx.cloud.callFunction({
          // 要调用的云函数名称
          name: 'bookinfo',
          // 传递给云函数的参数
          data: {
            isbn: res.result
          },
          success: res => {
            //  console.log(res)
            //进一步的处理
            var bookString = res.result;
            console.log(JSON.parse(bookString))


            //云数据库初始化
            const db = wx.cloud.database({});
            const book = db.collection('books')

            db.collection('books').add({
              // data 字段表示需新增的 JSON 数据
              data: JSON.parse(bookString)

            }).then(res => {
              console.log(res)
            }).catch(err => {
              console.log(err)
            })
          },
          fail: err => {
            console.error(res)
          }
        })
      },
      fail: err => {
        console.log(err);
      }
    })
  }

})

 

参考资源:

如何将获取到的API数据存入云数据库里面

https://cloud.tencent.com/developer/article/1381032