前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序环境共享,多个小程序共享一个云开发数据库

微信小程序环境共享,多个小程序共享一个云开发数据库

原创
作者头像
编程小石头
发布2022-02-24 10:47:29
4.9K2
发布2022-02-24 10:47:29
举报
文章被收录于专栏:小程序云开发入门

我们在做小程序开发时,有时候需要多个小程序公用一个数据库,比如我们做一个外卖小程序,要配套一个骑手小程序,这个时候就要两个小程序公用一个云开发环境,公用一个数据库了。所以今天来教下大家如何多个小程序共享一个云开发环境和数据库。

其实官方给的文档很详细了,但是一个细节官方没有讲到,所以就会导致好多同学做多个小程序共享一个云开发环境时,遇到各种各样的问题。

比如下面这样的问题

明明感觉自己按照官方要求,该配置的都配置了啊,但是为啥就是出错呢。所以我这里再带大家完整的配置一遍,把里面的一些注意事项也给大家好强调下。

一,准备条件

1-1,必须同一个主体

首先看官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/resource-sharing/

要共享云开发资源可以 ,但是必须是同一个主体。什么是同一个主体呢,就是两个小程序必须都是你自己的,或者是你公司的。

如果不是同一个主体,会报如下错误

1-2,最新的基础库,最新版开发工具

这里记得调到最新的基础库,开发者工具也尽量用最新的

开发者工具这里官方是有要求的

二,开通环境共享

我这里以两个小程序共享一个数据库为例

小程序A

小程序B

大家这里记得我们是小程序A 共享数据库给小程序B

2-1,开通环境共享

开通,使用 1.03.2009140 或以上版本的开发者工具,进入云控制台,到 “设置 - 拓展能力 - 环境共享” 点击开通即开通环境共享能力

2-2,开通后授权给别的小程序

环境共享开通后将在顶部tab显示环境共享功能,进入 “环境共享” 的页面,点击“添加共享”,即可授权同主体下其他小程序/公众号使用当前小程序下的云开发资源

这里填写你要共享小程序的appid,我们这里取小程序B的appid

授权,选择共享的云环境,默认选中所有环境操作权限,可根据实际使用场景自定义授权。这里建议保持默认即可

比如我这里分享给小程序B(编程小石头)

2-3,使用共享的云开发环境

我们上面操作好以后,就可以在小程序B的云开发后台看到共享的云开发环境了。将我们的云开发环境切换下就可以查看和使用共享的资源了。

可以看到小程序B(编程小石头)可以查看小程序A的数据库了

三,请求共享的数据库

我们接下来就在小程序B里调用小程序A的数据库了。官方提示的是调用之前要在小程序A里创建一个如下的云函数,但是我在测试的时候发现不用创建也可以的。

所以我们就先不创建cloudbase_auth 云函数,来看看能不能调取到数据。

3-1,初始化云开发环境

我们小程序B想使用小程序A的云开发环境,这里要注意,初始化的时候要如下面注释里写的一样,用小程序A的appid和云开发环境id

3-2,调用资源方数据

初始化以后不能想正常调用云开发数据库那样了,会报错

所以我们这里要改变下使用方法。如下

这时候还会报错,是因为我们忽略了官方的一个要求:“ 跨账号调用,必须等待 init 完成”,所以我们必须给init加一个await语法,如下,记得await要结合着async一起使用。

可以看到我们成功的请求到了小程序A的数据。直接get的时候记得改下数据库权限奥。

代码贴出来给大家,记得改成自己的配置

代码语言:txt
复制
Page({
    async onLoad() {
        // 声明新的 cloud 实例
        var c1 = new wx.cloud.Cloud({
            // 资源方 小程序A的 AppID
            resourceAppid: 'wx7c54942dfc87f4d8',
            // 资源方 小程序A的 的云开发环境ID
            resourceEnv: 'test-ec396a',
        })

        // 跨账号调用,必须等待 init 完成
        // init 过程中,资源方小程序对应环境下的 cloudbase_auth 函数会被调用,并需返回协议字段(见下)来确认允许访问、并可自定义安全规则
        await c1.init()

        // wx.cloud.database().collection('xiaoshitou').get()
        c1.database().collection('xiaoshitou').get()
            .then(res => {
                console.log('共享环境请求数据成功', res)
            })
    }
})

四,调用共享环境的云函数

4-1,调用资源方里的云函数

我们这里在小程序B(编程小石头)里调用小程序A里的云函数试试。

如小程序A里有一个xiaoshitou的云函数

可以看到我们可以成功的调用小程序A里的xiaoshitou云函数

是不是很简单。今天就给大家讲到这里了,欢迎关注,后面会分享更多小程序开发的知识给大家。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,准备条件
    • 1-1,必须同一个主体
      • 1-2,最新的基础库,最新版开发工具
      • 二,开通环境共享
        • 2-1,开通环境共享
          • 2-2,开通后授权给别的小程序
            • 2-3,使用共享的云开发环境
            • 三,请求共享的数据库
              • 3-1,初始化云开发环境
                • 3-2,调用资源方数据
                • 四,调用共享环境的云函数
                  • 4-1,调用资源方里的云函数
                  相关产品与服务
                  云开发 CloudBase
                  云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档