问题描述:
在讲解咸虾米壁纸uniapp全栈微信小程序vue3后台这个项目的时候,写云对象方法的时候,定义uniCloud.databaseForJQL()的时候,经常会在每个方法中都要写一次,如下所示:
async add(params={}){
const dbJQL = uniCloud.databaseForJQL({
clientInfo:this.getClientInfo()
})
return await dbJQL.collection("xxm-activity-banner").add(params);
},
async list(){
const dbJQL = uniCloud.databaseForJQL({
clientInfo:this.getClientInfo()
})
return await dbJQL.collection("xxm-activity-banner").get();
}
如上所示,在云对象中,每写一个方法,都要定义一遍dbJQL,这块代码虽然不多,但是云对象方法比较多的话,每次写还是比较费劲的,我在直接讲课的时候说过,可以直接将定义dbJQL拿到云对象最外层去,但是拿出去就无法进行代码提示了,下面是最终解决办法,又能jql语法提示,又减少代码。
解决办法:
let dbJQL = uniCloud.databaseForJQL();
module.exports = {
_before: function () { // 通用预处理器
const clientInfo = this.getClientInfo();
dbJQL = uniCloud.databaseForJQL({clientInfo});
},
async add(params={}){
return await dbJQL.collection("xxm-activity-banner").add(params);
},
async list(){
return await dbJQL.collection("xxm-activity-banner").get();
}
}
看上面代码,是不是简化了很多,在云对象里面写方法,就不用在每个方法里面重新定义dbJQL了,而且也有代码提示。
扩展
如果想要学习uniapp、uniCloud的知识,可以学习免费的课程,可以让你能够独立完成前后端全栈的开发。