微信小程序網悅新聞開發--雲函數以及雲數據開發(七)

目錄

微信小程序網悅新聞開發--功能介紹(一)

微信小程序網悅新聞開發--小程序配置(二)

微信小程序網悅新聞開發--首頁模塊開發(三)

微信小程序網悅新聞開發--視頻模塊開發(四)

微信小程序網悅新聞開發--我的模塊開發(五)

微信小程序網悅新聞開發--自定義組件開發(六)

微信小程序網悅新聞開發--雲函數以及雲數據開發(七)

 

雲函數

雲函數是一段運行在雲端的代碼,無需管理服務器,在開發工具內編寫、一鍵上傳部署即可運行後端代碼。

小程序內提供了專門用於雲函數調用的 API。開發者可以在雲函數內使用 wx-server-sdk 提供的 getWXContext 方法獲取到每次調用的上下文(appid、openid 等),無需維護複雜的鑑權機制,即可獲取天然可信任的用戶登錄態(openid)。

雲函數創建

1、在project.config.json中配置節點cloudfunctionRoot表示雲函數的路徑

2、在app.json中配置cloud爲true開啓雲函數

3、在cloud-functions文件夾右擊新建Node.js雲函數

雲函數編碼

以網悅新聞小程序登錄爲例,下面展示登錄的雲函數編碼,首先去查雲數據庫是否存在用戶,如果存在,則修改登錄信息,如果不存在就新增一條用戶信息。

// 雲函數入口文件
const cloud = require('wx-server-sdk')
cloud.init({
  env: 'miniprogram-news163-iq1ji',
  traceUser: true,
})
const db = cloud.database()
const _ = db.command

// 雲函數入口函數
exports.main = async (event, context) => {
  var resultMsg = {};
  const wxContext = cloud.getWXContext();
  //獲取用戶提交的參數
  var userInfo ={};
  userInfo.openid = event.openid;
  userInfo.avatarUrl = event.avatarUrl;
  userInfo.gender = event.gender;
  userInfo.nickName = event.nickName;
  userInfo.province = event.province;
  userInfo.city = event.city;
  userInfo.loginDate = new Date();
  //根據openid查詢用戶信息
  var userInfoList = await db.collection('userInfo').where({
    openid: userInfo.openid
  }).get();
  //如果用戶不存在則新增用戶
  if(userInfoList.data.length ==0 ){
    resultMsg.data = userInfo;
    await db.collection('userInfo').add({
      data: userInfo,
      success(res) {},
      fail(res) {}
    })
  //如果用戶存在則更新用戶信息
  }else{
    var oldUserInfo = userInfoList.data[0];
    resultMsg.data = oldUserInfo;
    await db.collection('userInfo').doc(oldUserInfo._id).update({
      data: {
        loginDate:new Date()
      },
      success: function(res) {}
    })
  }
  resultMsg.status ="ok";
  resultMsg.message ="登錄成功";
  return resultMsg
}

雲函數調用

以網悅新聞小程序登錄爲例,下面展示登錄的雲函數調用。

var userInfo = {};
userInfo.openid = openid;
userInfo.avatarUrl = res.userInfo.avatarUrl;
userInfo.gender = res.userInfo.gender;
userInfo.nickName = res.userInfo.nickName;
userInfo.province = res.userInfo.province;
userInfo.city = res.userInfo.city;
//調用雲函數
wx.cloud.callFunction({
name: 'user-login',
data: userInfo
}).then(res => {
  app.globalData.userInfo = res.result.data;
  that.setData({
	userInfo: res.result.data,
	hasUserInfo: true
  })
  wx.hideLoading();
}).catch(err => {
  console.log(err);
})

雲數據查看

在雲開發中可以查看對應的表以及表中的數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章