前言
微信小程序的开发愈发火热,微信官方推出的云开发功能给中小型开发者提供了很大助力。开启了云开发功能的小程序,可以使用数据库,存储空间等一系列免费资源,给开发者提供了很大的便利,开发者可以聚焦核心功能,而不用分心部署自己并不熟悉的后端api服务。微信官方云开发文档对于小程序或者云函数中调用数据库的api解释的非常详细,但是对于非小程序或云函数环境(比如我们的node服务器)如何调用,就一笔带过,显得语焉不详。要注意,浏览器环境不能直接调用数据api,必须通过服务器中转。这里笔者将结合自己踩过的坑,展示一些特殊查询语句的调用方法。
准备工作
要在服务器环境中调用云开发的官方api,首先要根据你的小程序获取调用token:
const getAccessToken = async() => {
const domain = 'https://api.weixin.qq.com/cgi-bin/token';
return await ownTool.netModel.get(domain, {
grant_type: 'client_credential',
appid: '你的appId',
secret: '你app的密码'
});
}
// 返回的是一个对象,结构如下
// { access_token, expires_in }
// expriest_in表示还有多少时间这个token将过期,过期后要重新申请
ownTool.netModel
就是任意具有http接口调用功能的第三方库, 这里使用get
方法发起请求,请求参数中的appId
和secret
都可以在小程序的开发者后台中产看。
这里获取的token
是我们后续调用官方api的必要条件。
调用官方api
假设这里有如下格式的数据:
这里首先给出一个api调用的例子:
const queryApi = 'https://api.weixin.qq.com/tcb/databasequery?access_token=';
// 外围是笔者的业务代码,不用太在意
// 功能就是向官方api查询数据,再转给client,也就是服务器
app.post(apiPrefix + '/queryPeriod', async function(req,res){
<