- 小程序环境共享入门/跨账号环境调用
先上文档:官方文档 一般碰到问题比较多的是怎么起步, !important 为了方便讲清楚概念,我们称呼主账号(提供资源/函数的小程序)为【资源方】,要进行跨账号环境调用资源的账号为【调用方】 (需小程序公共库 2.13.0 或以上)(需 wx-server-sdk 版本大于或等于 2.3.0) 确保要共享资源的两个小程序在同个主体下面 例如同个公司、个人开发者等。 用微信开发者工具,打开【资源方】,点击头像右侧的云开发 点击云开发弹框右侧的设置 选择顶部tab栏目的拓展功能 点击环境共享的开通 点击添加共享,并输入【调用方】的appid,根据需求勾选权限并确认 用微信开发者工具,打开【调用方】 点击云开发确认可以看到【资源方】的云函数和云存储,如果这一步没看到共享的内容,返回确认前面的步骤 在【资源方】的云开发-设置-环境设置-环境名称处,创建开通按量计费(免费)的云开发环境。 配置部分非常繁琐,但是到这里就结束了。接下来是开发部分 【资源方】云函数部分改动的内容,入口 [代码]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` 字段获取此对象的内容做校验, // 像这个示例就是资源方可以在安全规则中通过 `auth.custom.x` 获取 x: 1, }), } } [代码] 【调用方】云函数部分改动的内容 !important 这边前端建议对所有云函数入口做一个统一的路由,不要到处callFunction。 在统一路由那边,我一般是这样写在utils里,或者写到route.js里,这样你只要改一个地方,就可以修改整个小程序的所有请求 [代码]async function requestCloud(requestName, data) { wx.cloud.init({ traceUser: true }) let c1 = new wx.cloud.Cloud({ // 资源方 AppID resourceAppid: 'wx5d8d765e252720eb', // 资源方环境 ID resourceEnv: 'production-rjntq', }) await c1.init() return await c1.callFunction({ name: requestName, data: data }) } [代码] 如果是用promise的写法,就外面再包一层,举例,把上面的代码,加上下面的部分,塞到同一个新的function里, [代码]return new Promise(function (resolve, reject) { requestCloud(requestName, data).then(res => { if (res.result.code == 0) { resolve(res.result.data) return } else { hideLoading() wx.showToast({ title: res.result.msg, icon: 'none' }) reject(res.result) return } }).catch(err => { reject(err) return }) }) [代码] 纯前端的部分就结束了,这边遇到问题最多的是,没想到这玩意儿要初始化两次云函数,一次是自己的,一次是【资源方】的。 如果是【调用方】也有自己的后台,想要调用【资源方】的云函数, [代码]const cloud = require('wx-server-sdk') exports.main = async (event) => { // 声明新的 cloud 实例 var c1 = new cloud.Cloud({ // 资源方 AppID resourceAppid: 'wxe0e2656d74f0bff3', // 资源方环境 ID resourceEnv: 'test-f96b31', }) // 跨账号调用,必须等待 init 完成 // init 过程中,资源方小程序对应环境下的 cloudbase_auth 函数会被调用,并需返回协议字段(见下)来确认允许访问、并可自定义安全规则 await c1.init() // 完成后正常使用资源方的已授权的云资源 return c1.callFunction({ name: '函数名', data: {}, }) } [代码] 好了,你再编译一下自己的【调用方】代码,应该就ok了。 我现在卡在怎么以【调用方】身份,在wxml中例如Image src里直接访问【资源方】的图片资源。按理说云开发面板上是可以看到的,以及也授权了,应该是可以直接打开才对,但是渲染层就是打不开。有发现的朋友麻烦联系我微信:SH-Yushi。十分感谢。 已经通过后台批量替换cloud前缀为https格式解决。 现在还剩如何直接操作【资源方】云数据库。保底方案是通过云函数绕过去 update by 2020-11-05 有人私聊我怎么直接访问资源方图片。 我把我批量替换的方法写下面,供后人参考 [代码]function changeImageUrl(imageUrl) { if (this.isEmpty(imageUrl)) { return } let la = 'cloud://production-rjntq.' let ra = '1302413556/' let start = imageUrl.indexOf(la) if (start < 0) { return imageUrl } let end = imageUrl.indexOf(ra) - 1 let front = 'https://' + imageUrl.substring(la.length, end + ra.length) + '.tcb.qcloud.la' let back = imageUrl.substring(end + ra.length) return front + back } [代码] 记得去云存储里面看一眼自己的图片,右键查看详情,查看下载地址,你的那串数字应该和我的肯定是不同的,到我封的方法里把数字替换成自己的。 这边的问题是,虽然小程序开放了跨资源调用,也在文档里说可以跨资源访问图片,但是开发组告诉我们暂时不支持直接调用cloud://的path。因此想到转成https。好在他们的格式都是固定的,所以可以批量替换。 这边有个小坑,在动手操作之前还是仔细看自己的图片存储目录,因为每个人的 文件目录层级不同,因此前缀格式会有略微差别。但是思路是一致的。
2020-11-05 - 小程序云开发模糊查询,实现数据库多字段的模糊搜索
最近做小程序云开发时,用到了一个数据库的模糊搜索功能,并且是要求多字段的模糊搜索。 网上也有一大堆资源,但是都是单个字段的搜索。如下图 [图片] 上图只可以实现time字段的模糊搜索。但是我们如果相对数据表里的多个字段做模糊查询呢?该怎么办呢。 多字段模糊搜索 一,如我们的数据表里有以下数据,我们想同时模糊查询name和address字段 [图片] [图片] 如我们搜索“周杰”可以看到我们查询到下面两条数据。 [图片] 二,如我们搜索“编程”,可以搜索到下面数据 [图片] 可以看到我们搜索到的两条数据,一个是name字段为 编程小石头, 一个是address字段里包含“编程“ 字样。 下面把代码贴给大家 [代码] let key = "编程小石头"; console.log("查询的内容", key) const db = wx.cloud.database(); const _ = db.command db.collection('qcl').where(_.or([{ name: db.RegExp({ regexp: '.*' + key, options: 'i', }) }, { address: db.RegExp({ regexp: '.*' + key, options: 'i', }) } ])).get({ success: res => { console.log(res) }, fail: err => { console.log(err) } }) [代码] key就是我们要搜索的关键字。主要是用到了数据库查询的where,or,get方法。 代码都给大家贴出来来,如果对云开发和云数据库还不是很了解的同学可以去翻看下我以前写的文章。
2019-11-06 - 微信开发工具,调试器不能调试css 样式?
版本号:1.06.2209190win33-x64 [图片]每次改动 351rpx,这个值不会变,页面ui样式也没有变化
2022-10-13 - 微信开发工具,调试器不能调试css 样式?
版本号:1.062301040 [图片] [图片] 修改值总是只操作一次,比如我把width增加值,但回车之后永远只增加1,如果新增样式比如position:absolute,它就变成position:a 前年就有这个问题了, 去年也有,今年还是在,而且这个问题只是偶尔一段时间就会出现,关机重启甚至卸载都没用,等过段时间就正常了,有网友反馈过的,但也没看到解决,具体看地址:https://developers.weixin.qq.com/community/minihome/doc/0002ce82af035842e5aea269756000?jumpto=comment
2023-04-17