
2025-09-07 16:25:00 來(lái)自于應(yīng)用公園
// 云函數(shù)入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV // 自動(dòng)使用當(dāng)前云環(huán)境
})
// 云函數(shù)入口函數(shù)
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext() // 獲取調(diào)用上下文
// 1. 無(wú)需復(fù)雜驗(yàn)證,直接從上下文中獲取用戶OpenID和UnionID(如果可用)
// 這是云函數(shù)的巨大優(yōu)勢(shì),此信息是微信側(cè)可信的
const openId = wxContext.OPENID
const appId = wxContext.APPID
const unionId = wxContext.UNIONID
// 2. 此處可以執(zhí)行其他操作,例如:
// - 讀寫(xiě)云數(shù)據(jù)庫(kù):cloud.database().collection('users')...
// - 調(diào)用其他第三方API
// - 進(jìn)行復(fù)雜的計(jì)算邏輯
// 3. 模擬一個(gè)向數(shù)據(jù)庫(kù)寫(xiě)入用戶訪問(wèn)記錄的操作
const db = cloud.database()
try {
await db.collection('user_logs').add({
data: {
openid: openId,
action: 'call_getUserInfo_function',
createTime: db.serverDate() // 使用服務(wù)器時(shí)間,避免用戶端時(shí)間不準(zhǔn)
}
})
} catch (e) {
console.error('寫(xiě)入日志失敗:', e)
// 日志寫(xiě)入失敗不應(yīng)影響主邏輯,可以選擇忽略或做其他處理
}
// 4. 最終返回用戶信息和自定義數(shù)據(jù)給小程序端
return {
openId,
appId,
unionId,
message: '獲取成功',
timestamp: Date.now(),
// 你可以在這里返回從數(shù)據(jù)庫(kù)查詢的更多用戶信息
// customData: userInfoFromDB
}
}
第三步:部署云函數(shù)// 頁(yè)面的.js文件
Page({
onLoad: function () {
this.getUserCloudInfo()
},
getUserCloudInfo: function () {
// 顯示加載提示
wx.showLoading({
title: '加載中',
})
// 調(diào)用云函數(shù)
wx.cloud.callFunction({
name: 'getUserInfo', // 你的云函數(shù)名稱
data: { // 可以向云函數(shù)傳遞參數(shù),本例無(wú)需傳遞
// optionalData: 'some data'
}
}).then(res => {
console.log('【云函數(shù)調(diào)用成功】', res.result)
// 處理返回結(jié)果,如更新頁(yè)面數(shù)據(jù)
this.setData({
userOpenId: res.result.openId,
userInfo: res.result
})
wx.hideLoading()
}).catch(err => {
console.error('【云函數(shù)調(diào)用失敗】', err)
wx.hideLoading()
wx.showToast({
icon: 'none',
title: '獲取信息失敗',
})
})
}
})
三、總結(jié)與實(shí)踐