+
95
-

回答

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);
});

网友回复

我知道答案,我要回答