1、創建配置文件
// utils/cloudConfig.js
// 云開發環境配置// 當前小程序配置
const currentConfig = {env: "cloudbase-6goxxxxxxd6c75e0", // 當前小程序環境 IDappid: "wxdexxxxx5dbcf04", // 當前小程序 AppID
};// 共享云開發環境配置
const sharedConfig = {resourceAppid: "wx9xxxxxxxx142c", // 資源方小程序 AppIDresourceEnv: "xxve-0gxxxxx521f5", // 資源方環境 ID
};module.exports = {currentConfig,sharedConfig,
};
2、封裝請求(云函數為例)
提示:不會用云函數可看之前的文章:
// utils/cloudRequest.js
// 云函數請求封裝工具const app = getApp();/*** 調用共享云函數* @param {string} functionName - 云函數名稱* @param {object} data - 傳遞的數據* @returns {Promise} 返回云函數調用結果*/
async function callSharedFunction(functionName, data = {}) {try {// 等待共享云開發環境初始化完成,下一步展示具體內容await app.waitForSharedCloudReady();if (!app.globalData.sharedCloud) {throw new Error("共享云開發環境未初始化");}const result = await app.globalData.sharedCloud.callFunction({name: functionName,data: data,});console.log(`共享云函數 ${functionName} 調用成功:`, result);return result;} catch (error) {console.error(`共享云函數 ${functionName} 調用失敗:`, error);// 顯示錯誤提示wx.showToast({title: "獲取數據失敗",icon: "none",});throw error;}
}/*** 通用數據獲取方法* @param {object} data - 配置選項* @param {object} data.gather - 集合名稱,必填* @param {object} data.page - 頁碼,默認1* @param {object} data.pageSize - 每頁數量,默認20,pageSize和size二選一* @returns {Promise} 返回數據*/
async function getCloudFunctionData(data = {}) {try {const res = await callSharedFunction("云函數名", data);if (res && res.result) {return res.result;} else {// console.warn(`獲取 ${functionName} 數據為空或格式不正確:`, res.result);return {};}} catch (error) {// console.error(`獲取 ${functionName} 數據失敗:`, error);throw error;}
}module.exports = {callSharedFunction,getCloudFunctionData
};
提示:以下是本篇文章正文內容,下面案例可供參考
3、初始化云開發
// app.js
const { currentConfig, sharedConfig } = require("./utils/cloudConfig");App({onLaunch() {// 初始化當前小程序的云開發環境wx.cloud.init({env: currentConfig.env, // 當前小程序環境 IDappid: currentConfig.appid, // 當前小程序 AppIDtraceUser: true, // 開啟用戶追蹤(可選)});// 初始化共享云開發環境this.initSharedCloud();},// 初始化共享云開發環境async initSharedCloud() {try {// 創建共享云開發實例const sharedCloud = new wx.cloud.Cloud({resourceAppid: sharedConfig.resourceAppid, // 資源方小程序 AppIDresourceEnv: sharedConfig.resourceEnv, // 資源方環境 ID});// 初始化共享云開發環境await sharedCloud.init();// 將共享云開發實例保存到全局數據中this.globalData.sharedCloud = sharedCloud;this.globalData.sharedCloudReady = true; // 標記初始化完成console.log("共享云開發環境初始化成功");// 觸發初始化完成事件this.triggerSharedCloudReady();} catch (error) {console.error("共享云開發環境初始化失敗:", error);this.globalData.sharedCloudReady = false;}},// 觸發共享云開發環境初始化完成事件triggerSharedCloudReady() {if (this.globalData.sharedCloudReadyCallbacks &&this.globalData.sharedCloudReadyCallbacks.length > 0) {this.globalData.sharedCloudReadyCallbacks.forEach((callback) => {try {callback();} catch (error) {console.error("執行共享云開發環境就緒回調失敗:", error);}});this.globalData.sharedCloudReadyCallbacks = [];}},// 等待共享云開發環境初始化完成waitForSharedCloudReady() {return new Promise((resolve, reject) => {if (this.globalData.sharedCloudReady) {resolve();} else {// 添加回調到隊列if (!this.globalData.sharedCloudReadyCallbacks) {this.globalData.sharedCloudReadyCallbacks = [];}this.globalData.sharedCloudReadyCallbacks.push(resolve);// 設置超時setTimeout(() => {reject(new Error("共享云開發環境初始化超時"));}, 10000); // 10秒超時}});},globalData: {sharedCloud: null,sharedCloudReady: false, // 共享云開發環境是否初始化完成sharedCloudReadyCallbacks: [], // 等待初始化的回調隊列},
});
4、使用
// index.js
const { getCloudFunctionData } = require("../../utils/cloudRequest.js");Page({/*** 頁面的初始數據*/data: {},// 共享數據async getTopicList() {try {const res = await getCloudFunctionData({ gather: "你的集合名" });console.log(res);} catch (err) {console.log(err);}},/*** 生命周期函數--監聽頁面加載*/onLoad(options) {this.getTopicList();},
});