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、正常返回没有数据一般是集合权限问题,默认是读写创建者可见,改成所有可读就好