上一章已经创建了uniCloud和新建的表和数据,这一章就需要如何拿到数据和如果给添加数据了
关联云服务器的表
在uniCloud中,有个方法,直接可以连接服务器的,
在cloudfunctions中,创建一个云函数,点击文件右键,
这就创建好了,那如何关联服务器呢?
'use strict';
//这就是连接服务器
const db = uniCloud.database();
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('event : ', event)
const collection=await db.collection("users");//关联数据表
//返回数据给客户端
return collection
};
从服务器中获取数据展示到页面
既然已经连接到服务器了,那要怎么拿到数据呢?
在调用页面,使用下面的代码:
function getCloud(){
uniCloud.callFunction({
name:'CloudDemo1'
}).then(res=>{
console.log(res);
arr.value=res.result.data
})
}
onLoad(()=>{
getCloud();//调用方法
})
这里使用uniCloud的方法,callFunction,这里的name,是直接你创建的云函数名称,然后通过then的获取返回的数据,
get:获取数据
在设置云函数的地方,使用get的方法,就是获取服务器的数据,使用方法:
const collection=await db.collection(“users”).get()
add:添加数据
添加数据,这里就需要再页面上进行添加,添加的时候,使用数组形式的
//onSubmit 设置的点击事件
const onSubmit = function(e) {
console.log(e);
//arr:设置的数组,从页面上获取到的输入值
arr.value = e.detail.value;
console.log(arr.value);
pushCloud(arr.value)
}
//定义的添加方法
function pushCloud(obj) {
uniCloud.callFunction({
name: 'CloudDemo1',
//data:需要上传的数据
data: obj
}).then(res => {
console.log(res);
})
}
//在云函数中调用
const collection=await db.collection("users").add(event);//关联数据表
doc
这是根据传递的参数,返回一个特定值
const collection=await db.collection(“users”).doc(event).get()
limit
返回几个数据
const collection=await db.collection(“users”).limit(event).get()
orderBy
这是数据进行排序返回
const collection = await db.collection(‘users’).orderBy(“_id”,“desc”).get()
field
这是设定返回的字段
const collection = await db.collection(‘users’).field({“name”:true}).get();
这里需要注意:field(),里面是需要使用对象的形式,然后字段名,后面是true或false
where
这是条件查询,
const collection = await db.collection("users").where({
id:event.id,
name:event.name
}).get(); //关联数据表
eq等于
const db = uniCloud.database();
const cmd=db.command; //uniCloud有个指令,可以对比数据,先需要声明
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('event : ', event)
const collection = await db.collection("users").where({
age:cmd.eq(20) //根据声明这这里使用eq
}).get(); //关联数据表
//返回数据给客户端
return collection
};
neq 不等于
gt 大于
gte 大于等于
lt 小于
lte 小于等于
in 在数组中
nin 不在数组中
以上都是和eq写法相同,这里不多做说明
and 且 表示需同时满足指定的两个或以上的条件
or 或
这两个,是有两种写法,例如and,判断某个参数大于20并且小于30,使用方法就是
正常写法: age:cmd.gt(20).and(cmd.lt(30));
前置写法:age:cmd.and(cmd.gt(20),cmd.lt(30));
or的写法是一样的