微信小程序之共享环境

微信小程序之共享环境 文章目录环境共享配置访问共享环境环境共享配置打开资源方的小程序工程或者小游戏工程(就是已开通云开发环境的那个工程)然后打开云开发点击右上角更多选择环境共享选择添加共享填入要共享的另一个小程序的appid 和 共享权限然后提交即可访问共享环境云函数这里要先调整一下(假如你的云数据库里面存储的数据是以unionid为key存储的那么就需要跟着我这样操作)UnionID机制这里是获得unionid的话需要 用FROM_UNIONID 这个就是使用共享环境的小程序可以拿到资源方是不需要的 资源方的话直接用unionidWXContext相关参数代码相关新建一个util文件夹 然后在这个文件夹下面创建一个文件 cloudRequest.js 代码如下// utils/cloudRequest.js// 云函数请求封装工具constappgetApp();/** * 调用共享云函数 * param {string} functionName - 云函数名称 * param {object} data - 传递的数据 * param {function} callback - 回调函数 */asyncfunctioncallSharedFunction(functionName,data{},callbacknull){try{// 等待共享云开发环境初始化完成下一步展示具体内容awaitapp.waitForSharedCloudReady();if(!app.globalData.sharedCloud){thrownewError(共享云开发环境未初始化);}awaitapp.globalData.sharedCloud.callFunction({name:functionName,data:data,success:res{console.log(callSharedFunction success,res)if(callback!null){callback(res);}},fail:res{console.log(callSharedFunction fail,res)if(callback!null){callback(res);}}});console.log(共享云函数${functionName}调用成功);}catch(error){console.error(共享云函数${functionName}调用失败:,error);// 显示错误提示wx.showToast({title:获取数据失败,icon:none,});if(callback!null){callback(null);}}}module.exports{callSharedFunction};app.js 代码如下 这里负责初始化该云环境 后续调用云函数都需要通过这个缓存云环境来调用这块需要注意填写资源方的相关信息const sharedCloud new wx.cloud.Cloud({resourceAppid: “资源方小程序 AppID”,resourceEnv: “资源方环境 ID”,});// app.jsApp({onLaunch:function(){this.initSharedCloud();},asyncinitSharedCloud(){try{// 创建共享云开发实例constsharedCloudnewwx.cloud.Cloud({resourceAppid:资源方小程序 AppID,resourceEnv:资源方环境 ID,});// 初始化共享云开发环境awaitsharedCloud.init();// 将共享云开发实例保存到全局数据中this.globalData.sharedCloudsharedCloud;this.globalData.sharedCloudReadytrue;// 标记初始化完成console.log(共享云开发环境初始化成功);// 触发初始化完成事件this.triggerSharedCloudReady();}catch(error){console.error(共享云开发环境初始化失败:,error);this.globalData.sharedCloudReadyfalse;}},// 触发共享云开发环境初始化完成事件triggerSharedCloudReady(){if(this.globalData.sharedCloudReadyCallbacksthis.globalData.sharedCloudReadyCallbacks.length0){this.globalData.sharedCloudReadyCallbacks.forEach((callback){try{callback();}catch(error){console.error(执行共享云开发环境就绪回调失败:,error);}});this.globalData.sharedCloudReadyCallbacks[];}},// 等待共享云开发环境初始化完成waitForSharedCloudReady(){returnnewPromise((resolve,reject){if(this.globalData.sharedCloudReady){resolve();}else{// 添加回调到队列if(!this.globalData.sharedCloudReadyCallbacks){this.globalData.sharedCloudReadyCallbacks[];}this.globalData.sharedCloudReadyCallbacks.push(resolve);// 设置超时setTimeout((){reject(newError(共享云开发环境初始化超时));},10000);// 10秒超时}});},globalData:{sharedCloud:null,sharedCloudReady:false,// 共享云开发环境是否初始化完成sharedCloudReadyCallbacks:[],// 等待初始化的回调队列},})调用示例OnClickConsoleButton(event){this.GetUserData();},asyncGetUserData(){awaitcallSharedFunction(GetUserData,{dbName:Normal},(res){console.log(res);});}