评论

多个小程序共用一个环境

多个小程序共享

1、共用一个环境,但是数据库还是分开的,集合名称用不同前缀区分,文件存储也是一样

2、用一个环境原因是共用一个服务号发送通知消息,这个具体看:公众号绑定小程序云开发

3、第一步云开发环境创建cloudbase_auth云函数,内容如下:

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()

  console.log(event)
  console.log(wxContext)
  // 跨账号调用时,由此拿到来源方小程序/公众号 AppID
  console.log(wxContext.FROM_APPID)
  // 跨账号调用时,由此拿到来源方小程序/公众号的用户 OpenID
  console.log(wxContext.FROM_OPENID)
  // 跨账号调用、且满足 unionid 获取条件时,由此拿到同主体下的用户 UnionID
  console.log(wxContext.FROM_UNIONID)

  return {
    errCode: 0,
    errMsg: '',
    auth: JSON.stringify({
      // 自定义安全规则
      // 在前端访问资源方数据库、云函数等资源时,资源方可以通过
      // 安全规则的 `auth.custom.x` 字段获取此对象的内容做校验
     x:1
    }),
  }
}  


4、修改调用方小程序本地云开发接口:

//初始定义
const cloud = async () =>{
	await wx.cloud.init()
	const cloud = await new wx.cloud.Cloud({
	  // 资源方 AppID
	  resourceAppid: "",
	  // 资源方环境 ID
	  resourceEnv: "",
	})
	await cloud.init()
	const db = cloud.database({
	    throwOnNotFound: false,
	})
	const _ = db.command;
	return {cloud,db,_}
}

//调用
const getData = async (table,where={})=>{
   let cloud = await cloud();
   let res = await cloud.db.collection(table).where(where).get();
   return res;
}

5、注意常见问题:1、检查appid,env是否填错,2、正常返回没有数据一般是集合权限问题,默认是读写创建者可见,改成所有可读就好



点赞 0
收藏
评论
登录 后发表内容