当前位置: 首页 > 科技观察

跟我学《Linux》小程序网页版开发(三):云开发相关数据调用_0

时间:2023-03-22 10:55:31 科技观察

简介完成接口实现后,就可以开始对接云开发相关数据了。数据对接完成后,应用基础打好了,接下来就是上线发布,添加一些小功能。配置在进行相关配置调用时,需要登录腾讯云控制台进行一些配置。使用小程序账号登录腾讯云,找到“云开发”产品。转到“产品控制台”。在“产品控制台”找到您的环境,点击进入“详情页”:在环境的“详情页”选择“用户管理”->“登录设置”->“匿名登录”:启用匿名登录.云开发的数据查询需要登录后才能查询,因为希望为用户提供免登录的解决方案。因此必须开启匿名登录,才能保证数据查询。由于需要在网页中调用相应的功能,所以在同一页面的WEB安全域名中也需要添加应用的在线域名(本地调试的localhost不需要添加)。在应用中添加匿名登录的逻辑。这部分代码位置:https://github.com/LCTT/tldr.linux.cn/blob/master/src/main.js由于希望用户打开网页查询数据,所以,匿名登录逻辑必须在用户感觉不到的情况下完成。根据前期对vue生命周期的研究,将相应的逻辑放在beforeCreate中,保证应用初始化完成后,可以自动完成匿名登录。具体实现代码如下://main.jsnewVue({router,vuetify,render:h=>h(App),beforeCreate:function(){//添加匿名登录逻辑constauth=this.$tcb.auth();//添加匿名登录逻辑auth.signInAnonymously();//添加匿名登录逻辑}//添加匿名登录逻辑}).$mount('#app')添加后可以使用云开发数据库和其他命令完成相应的数据库调用,验证调用是否正常。这里需要注意的是,由于Vue默认的ESLint规则的限制,Vue项目代码中默认不能使用console.log。您需要使用一些命令来跳过相应的检查。只需在需要打印变量的前一行添加/eslint-disable-next-line即可避免相应的检查。这部分调用数据的代码位置:https://github.com/LCTT/tldr.linux.cn/blob/master/src/views/Result.vue初始化完成后,需要调用对应的数据完成,不再针对每一个进行解释,并选择一个例子来说明。constdb=this.$tcb.database();constcmd=db.collection('command');if(this.id){//这里的id是props传入的参数,也就是对应的docid到命令cmd.doc(this.id).get().then(res=>{this.command=res.data})}else{cmd.where({name:this.$route.params.cmd//command可以从Route中获取,但是在实际场景中,因为启用了props:true,所以也可以直接从props中获取。}).limit(1).get().then(res=>{this.command=res.data[0]}).catch((err)=>{alert("命令查询错误,请联系我们")//eslint-disable-next-lineconsole.error(err)})}在这段代码中,首先从之前挂载的$tcb中提取database()对象,并根据database()对象对象构建collection().然后使用collection()对象进行查询。由于这里涉及到不同的页面逻辑,所以用一个if来判断数据。上下分别是获取单个数据和使用多个数据的方法。获取到数据后,更新数据并同步到Vue的Data中,完成相应的逻辑调用。云开发登录坑这部分代码位置:https://github.com/LCTT/tldr.linux.cn/blob/master/src/main.js既然为用户提供了快速查询的功能,希望用户无论怎样查询都无动于衷。但是在实际测试的时候发现,如果用户直接通过命令行登录,会报错。根据控制台返回的信息,在用户登录状态完成前进行了数据查询。通过查询云开发的文档发现,在云开发的auth对象登录时,可以传入一个持久化参数来控制身份信息的持久化。由于默认使用会话,因此用户的登录状态丢失。为了保证应用的正常状态,将persistence设置为local,保证应用在一次登录后能够将用户的登录状态转移到用户的存储中,避免用户总是遇到请求失败的问题。//main.jsnewVue({router,vuetify,render:h=>h(App),beforeCreate:asyncfunction(){constauth=this.$tcb.auth({persistence:'local'});awaitauth.signInAnonymously();}}).$mount('#app')总结在实际开发中,如果需要通过云开发的WebSDK调用相应的数据,需要开启云开发的匿名登录并配置Web安全第一的。域名;数据调用部分和小程序端云开发的调用没有太大区别;并且通过设置持久化设置解决登录状态丢失的问题。