UniCloud提供了多种方式来访问云端数据和执行云函数。选择合适的方式取决于项目需求和开发习惯。推荐使用callFunction和clientDB方式,因为它们更安全、高效且具有更简洁的代码。同时,不需要额外注册域名,这提供了额外的安全性。
传统RESTful:
适用情况:需要使用传统的RESTful接口进行数据交互的情况,例如使用HTTP请求来获取数据。特点:通常需要注册域名和处理HTTP请求,不如UniCloud方式安全和高效。callFunction云函数:
适用情况:适用于在UniApp客户端通过uniCloud.callFunction(functionname)调用云函数的情况。特点:相对传统方式更安全,不会暴露域名和IP地址,不易受到攻击,代码简洁,开发高效。
客户端调用
// 在UniApp客户端中调用云函数
uniCloud.callFunction({
name: 'functionname', // 云函数名称
data: {
// 传递给云函数的参数
key1: 'value1',
key2: 'value2'
},
success: function(res) {
// 云函数调用成功
console.log('云函数调用成功', res.result);
},
fail: function(err) {
// 云函数调用失败
console.error('云函数调用失败', err);
}
});
云对象(importObject):
适用情况:用于UniApp客户端通过uniCloud.importObject(functionname)调用云对象的情况。特点:与传统方式相比,代码更简洁,开发更高效,UniApp 3.4版本起支持。
const todo = uniCloud.importObject('todo') //第一步导入云对象
async function addTodo () {
try {
const res = await todo.add('title demo', 'content demo') //导入云对象后就可以直接调用该对象的方法了,注意使用异步await
uni.showToast({
title: '创建成功'
})
} catch (e) {
// 符合uniCloud响应体规范 https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=resformat,自动抛出此错误
uni.showModal({
title: '创建失败',
content: e.errMsg,
showCancel: false
})
}
}
clientDB:
适用情况:用于UniApp客户端通过调用uniCloud.database()API来访问云端数据的情况。特点:推荐使用,UniApp 3.4版本起支持,与传统方式相比,更方便,代码更简洁。
客户端调用
// 获取云端数据库引用
const db = uniCloud.database();
// 获取集合(表)的引用
const collection = db.collection('collectionName'); // 替换为实际集合名称
// 查询数据
collection.where({
// 查询条件
key: 'value'
}).get().then(res => {
// 查询成功
console.log('查询成功', res.data);
}).catch(err => {
// 查询失败
console.error('查询失败', err);
});
网友回复


