最近官方对软件进行了大版本的更新,原来的数据源拆分成了三个模块,数据模型、连接器、自定义连接器。有的小伙伴对自定义连接器的用法比较模糊,有的在使用中发现报错无从下手。本文就介绍一下自定义连接器的用法。
自定义连接器
自定义连机器有两种用法,一种是按照http的形式调用第三方接口,需要按照第三方接口形式输入入参和出参。已经有小伙伴自行接入了维格表,并且开发了一款应用。利用http的形式接入第三方的产品还是不错的,这样可以结合双方产品的各自优势,取长补短。
当然了本文不介绍第一种方式,因为入门阶段还是需要掌握好官方自带的数据库的用法。都熟练了之后可以考虑进行扩展。本文介绍自定义连接器的第二种用法,使用自定义代码来操作数据源。我们的应用非常简单,调用一个数据源的数据并在应用显示出来。
示例数据源
我们的数据源非常简单,只有两个字段,title和content
连接器创建方法
点击自定义连接器,我们创建一个,输入名称和标识
新建好之后我们新建一个方法
选择自定义代码旁边的查看详情链接,输入如下代码
module.exports = async function (params, context) {
const result = await context.database.collection('lcap-data-1SgZGFhZg-news_ycslotr').get();
// 在这里返回这个方法的结果,需要与出参定义的结构映射
return result.data
};
这里的collection里边的内容要去哪里找呢?点击导航条找到云产品下边的云开发Cloudbase
点击环境的图标进入我们的环境里
选择数据库
找到后缀和你的数据源的标识一致的集合
将标红的标识替换到collection里
关于数据库的具体操作,可以参考云开发数据库的api
https://docs.cloudbase.net/api-reference/server/node-sdk/database/database
代码写好之后需要做出参,出参的结构可以参考我的
注意层次关系,错了结果就不正确
应用里调用连接器
应用里如果希望调用连接器,先需要定义一个变量,变量定义成数组
在页面的生命周期函数里调用连接器并给数组进行赋值
代码如下:
/*
* 可通过 $page 获取或修改当前页面的 变量 状态 handler lifecyle 等信息
* 可通过 app 获取或修改全局应用的 变量 状态 等信息
* 具体可以 console.info 在编辑器Console面板查看更多信息
* 如果需要 async-await,请在方法前 async
*/
export default {
async onPageLoad(query) {
//console.log('---------> LifeCycle onPageLoad', query)
const result = await app.cloud.callConnector({
name: 'zdydm_d9nirkz',
methodName: 'get',
params: {}, // 方法入参
});
console.log(result)
$page.dataset.state.sz = result
},
onPageShow() {
//console.log('---------> LifeCycle onPageShow')
},
onPageReady() {
//console.log('---------> LifeCycle onPageReady')
},
onPageHide() {
//console.log('---------> LifeCycle onPageHide')
},
onPageUnload() {
//console.log('---------> LifeCycle onPageUnload')
},
onPullDownRefresh(){
console.log('-----> onPullDownRefresh')
}
}
name是连接器的标识,methodName是方法名。代码写好之后我们可以给页面添加一个列表项的组件用来显示具体的内容
给该组件绑定循环展示,绑定为我们刚刚定义好的数组变量
标题的话用表达式进行绑定
$for.id3.title
最终效果
按照相同的办法绑定一下内容即可,最终就使用了自定义代码的形式获取到了集合里的数据
总结
使用自定义连接器来访问微搭自己的数据库比较灵活。可以支持云开发数据库的所有语法,尤其是在多表关联和统计分析等场景中还是很好使的。如果你的业务逻辑比较复杂,那就使用这种方式来调取数据吧,用熟练了其实你发现文档数据库也蛮好用的。
联系客服