- 特点
- DevEco Studio一套开发工具即可支撑端侧与云侧同时开发,无需搭建服务器;
- 依托AGC中Serverless云服务开放的接口,端侧开发人员能轻松操作云函数以及云数据库中的数据;
- 直接接入AGC Serverless云服务,实现免运维,无运维成本或资源浪费。
2.云函数开发步骤
- 在编译器建立云开发项目
- 到这里需要登录agc(云后台),点击箭头处直接登录
- 在后台创建项目
- 创建项目
- 添加应用
- 开通对应的服务
- 新建好的项目包含两部分,一是客户端部分,另外一部分是云服务部分
- 建立云函数
- 云函数代码实现
/**
* 云函数入口 固定格式
* @param event 接收请求的参数
* @param context 上下文
* @param callback 回调,返回执行结果
* @param logger 日志
*/
let myHandler = async function (event, context, callback, logger) {
logger.info("aaa"+event);
// do something here
let random=Math.random().toFixed(6);
let res = new context.HTTPResponse({"random": random,"username":JSON.parse(event.body).username,"pwd":"pwdddddd"}, {
"faas-content-type": "json"
}, "application/json", "200");
callback(res);
};
export { myHandler };
- 上次云函数到服务器后台
- 客户端编码实现请求云函数
Button('测试云函数')
.onClick(async()=>{
let testFun=await cloud.callFunction({
name:'qdamatest',
version: '$latest',
params:{username:'lufanzheng',pwd:'123'}
})
let result=testFun.getValue();
console.log('aaaa',result.username,typeof result.username)
AlertDialog.show({message:JSON.stringify(result)})
})
- 云数据库的基础使用
- 解说 1:图中1处json文件是给指定表插入数据 2.图中2处json文件是建立数据表
- 图中2出user.json代码实现,使用编译器提供的快速模版代码实现
{
"fields": [
{
"belongPrimaryKey": true,
"fieldName": "uid",
"fieldType": "IntAutoIncrement",
"isNeedEncrypt": false,
"notNull": true
},
{
"belongPrimaryKey": false,
"fieldName": "username",
"fieldType": "String",
"isNeedEncrypt": false,
"notNull": false
},
{
"belongPrimaryKey": false,
"fieldName": "pwd",
"fieldType": "String",
"isNeedEncrypt": false,
"notNull": false
},
{
"belongPrimaryKey": false,
"fieldName": "age",
"fieldType": "Integer",
"isNeedEncrypt": false,
"notNull": false
}
],
"indexes": [
{
"indexName": "uid",
"indexList": [
{
"fieldName": "uid",
"sortType": "DESC"
}
]
}
],
"objectTypeName": "user",
"permissions": [
{
"rights": [
"Read",
"Upsert",
"Delete"
],
"role": "World"
},
{
"rights": [
"Read",
"Upsert",
"Delete"
],
"role": "Authenticated"
},
{
"rights": [
"Read",
"Upsert",
"Delete"
],
"role": "Creator"
},
{
"rights": [
"Read",
"Upsert",
"Delete"
],
"role": "Administrator"
}
]
}
- 图中1中的代码也使用模版代码实现
{
"cloudDBZoneName": "Demo",
"objectTypeName": "user",
"objects": [
{
"uid": 1,
"username": "1111",
"pwd": "1111",
"age": 10
},
{
"uid": 2,
"username": "2222",
"pwd": "2222",
"age": 20
}
]
}
-
和云函数一样上次到云后台
-
在云后台下载对于表的bean模板
- 在 EntryAbility中进行初始化
- 在页面中实现CRUD
Button('测试云数据库-查询')
.onClick(async()=>{
try {
//创建数据库对象
let database=cloud.database({
objectTypeInfo:schema,
zoneName:"Demo"
})
//查询数据 user:表名
let databaseDate=await database.collection(user)
.query()
.equalTo('uid',1)
.get()
console.log('aaaa',JSON.stringify(databaseDate));
Prompt.showToast({message:JSON.stringify(databaseDate)})
} catch (e) {
console.log('aaaa',JSON.stringify(e));
}
})
Button('测试云数据库-插入数据')
.onClick(async()=>{
try {
//创建数据库对象
let database=cloud.database({
objectTypeInfo:schema,
zoneName:"Demo"
})
//插入数据
let user1=new user()
user1.setUsername('lufanzheng')
user1.setPwd('456')
user1.setAge(3)
let num=await database.collection(user)
.upsert(user1)
Prompt.showToast({message:`添加成功${num}`})
} catch (e) {
console.log('aaaa',JSON.stringify(e));
}
})
Button('测试云数据库-更新数据')
.onClick(async()=>{
try {
//创建数据库对象
let database=cloud.database({
objectTypeInfo:schema,
zoneName:"Demo"
})
//更新数据
let user1=new user()
user1.setUid(1)
user1.setUsername('3333')
user1.setPwd('3333')
user1.setAge(3)
let num=await database.collection(user)
.upsert(user1)
Prompt.showToast({message:`更新成功${num}`})
} catch (e) {
console.log('aaaa',JSON.stringify(e));
}
})
Button('测试云数据库-删除数据')
.onClick(async()=>{
try {
//创建数据库对象
let database=cloud.database({
objectTypeInfo:schema,
zoneName:"Demo"
})
//更新数据
let user1=new user()
user1.setUid(1)
let num=await database.collection(user)
.delete(user1)
Prompt.showToast({message:`删除成功${num}`})
} catch (e) {
console.log('aaaa',JSON.stringify(e));
}
})