UniCloud
1.进入官网选择uniCloud并注册(建议使用HBuilder 账号密码登录 )
2.创建一个服务空间
3.创建一个新的项目
4.创建云开发环境
右键项目创建并关联云服务空间
然后在cloudfunctions文件夹上右键创建云函数test
5.本地调试云函数test
点击右键-->选择本地运行云函数-->控制台会输出结果
6.上传云函数test
点击右键上传部署
7.设置云函数请求路径URL地址
(1)点击test云函数查看详情
(2)云函数URL不可用需要设置云函数域名绑定
a.点击函数列表
b.进入云函数域名绑定
c.启用域名
d.复制域名
(3)再次查看test云函数详情信息就可以编辑云函数URL了(以/http开头)
a.点击编辑URL可以设置自己想要的URL云函数请求路径
b.设置完毕保存后复制路径,就可以在项目中请求到云函数了
8.调用自己的接口
在一个页面的onLoad生命周期里写入调用的方法
方法一: uniCloud.callFunction({
name:"test", //云函数的名称
success:(e)=>{ //云函数调用成功的返回结果,在e.result属性上获得返回值
console.log(e);
}
})
由于这种请求方式不需要URL,黑客想攻击都找不到url入口,更安全;其次由于不需要URL,也就不需要域名,只做APP或小程序就不用购买和备案域名了
- 云函数URL化,通过
uni.request()
来获得数据,该方法不推荐使用
方法二:uni.request({
url:"https://13596766-970d-43e0-9cf4-b2ab2374bc33.bspapp.com/http/test",
success() {
}
})
9.创建云数据库
a.点击新建—>填写数据库名称—>创建—>手动添加JSON格式的数据
例如:
[
{
"name":"张三",
"phone":"1800000001"
},
{
"name":"李四",
"phone":"1800000002"
},
{
"name":"王五",
"phone":"1800000003"
}
]
b.点击数据表的表结构,更改数据表的操作权限,将false全部更改为true
10.在项目中请求数据表中的数据
a.首先右键database,下载所有DB Schema及扩展校验数据,将其引入到本地项目中
b.请求数据表中的数据
在项目中新建一个list页面,在template中添加(快捷键:udb):
<unicloud-db v-slot:default="{data, loading, error, options}" collection="users">
//collection为引用的数据表表名
<view v-if="error">{{error.message}}</view>
<view v-else>
{{data}} //datat即为请求到的数据
</view>
</unicloud-db>
此时在请求到data的view内即可使用这些数据:
uni-ui增删改查
在DCloud的插件市场中搜索uni-ui,向项目中引入UI 组件库
<unicloud-db ref="udb" v-slot:default="{data, loading, error, options}" collection="users">
<view v-if="error">{{error.message}}</view>
<view v-else>{{data}}
<uni-list>
<uni-list-item v-for="item in data" :key="item._id" :title="item.name" :note="item.phone" link @longpress.native="rmItem(item._id)"></uni-list-item>
</uni-list>
</view>
</unicloud-db>
删除数据
添加一个长按时间函数
rmItem(id){
this.$refs.udb.remove(id);//在udb中需要添加ref属性:ref='udb'
}
若删除失败,将数据表users.schema.json中的删除权限改为true;
添加数据
a.首先将数据表users.schema.json添加权限开通并上传
b.创建一个add添加页面
<template>
<view>
<uni-easyinput v-model="item.name" placeholder="姓名" />
<uni-easyinput v-model="item.phone" placeholder="电话" />
<button type="default" @click="submit"> 提交</button>
</view>
</template>
在submit()方法中用cdb获得数据库,并使用api来添加数据
data(){
return {
item:{
"name":"",
"phone":""
}
}
},
methods:{
submit(){
//获取数据库并添加数据
const db = uniCloud.database();
db.collection('users').add(this.item).then(e=>{
console.log(e);
})
}
}
此时会发生错误:
是因为在users.schema.json中没有“name”,“phone”的属性
需要在下载的database的users.schema.json中添加“name”,“phone”属性即可:
成功后刷新云服务空间的users数据表就可以看到新添加的数据
更新数据
(1)与添加数据的过程类似,创建一个update的页面
html:
<uni-easyinput v-model="item.name" placeholder="姓名" />
<uni-easyinput v-model="item.phone" placeholder="电话" />
JS--data:
item:{
"_id":"",
"name":"",
"phone":""
}
(2)在list页面中的按钮中添加点击跳转的事件函数:
<uni-list-item @click.native="updataFn(item)"> </uni-list-item>
在methods中添加:
updataFn(item){
uni.navigateTo({
url: '../update/update?item='+JSON.stringify(item)
//携带list页面的item数据跳转至update页面
})
}
(3)在update页面中添加
onLoad(ev){
this.item = JSON.parse(ev.item);
},
11.schema2code
这是uniCloud针对数据库增删改查的代码生成系统
(1)新建数据库:
(2)下载schema:
- 先将权限全部开启
- 然后点击schema2code导入到项目中
- 更新DB database的schema以及扩展校验函数
- 显示它生成的页面代码(pages)和验证规则(js_sdk中的validator)
(3)schema里面的作用 - bsonType属性:数据的类型,固定为object
- permission属性:数据增删改查的权限
- required属性:必填项字段
- properties属性:字段级配置,用来描述每个字段,每个字段依然是个属性
- bsonType属性:数据类型
- title属性:标题,对应页面前面的标题
- description属性:描述,对应页面的placeholder
- order属性:排序,从小到大排列
- trim属性:去空格
- defaultValue属性:默认值
- enum属性:枚举每项,描述text和值value,可以将单选改为多选;
- componentForEdit属性:组件设置,组件名字name和组件设置props
- pettern属性:该字段的正则验证
- format属性:内置验证器
(4)在通讯录中添加民族属性时,可以用enum属性关联民族表(同创建通讯录表一样导入民族表到项目中)
a.在opendb-contacts的schema中添加一个民族字段就可以关联两个表
"nation_china":{
"bsonType":"string",
"title":"民族",
"enum":{
"collection":"opendb-nation-china", //联表的名字
"field":"name as text,_id as value" //name当成描述text,_id当成值value
},
"foreignKey":"opendb-nation-china._id" , //联表查询的属性
"componentForEdit":{
"name":"uni-data-picker" //使用下拉列表组件来实现民族
}
}
b.更新DB database的schema以及扩展校验函数
c.重新导入opendb-contacts的schema2code到项目中(由于增加了民族的html)
c.刷新页面