当前位置:网站首页>uniCloud通讯录实战
uniCloud通讯录实战
2022-08-02 03:29:00 【GentleTK】
1 新建uni-app项目——通讯录
在 HBuilder 选择文件,新建(如果提示需要安装插件,按照提示安装即可,稍后会要求登陆,如果没有HBuilder账户,可以根据提示去注册):

2 创建云服务空间并关联项目
在 uniCloud 目录上单击右键,选择打开 uniCloud Web 控制台,根据提示创建云服务空间:

在 uniCloud 目录上单击右键,选择 关联云服务空间或项目,选择刚刚创建好的云服务空间:

3 创建数据表
在Web控制台的云数据库下点击创建数据表:

点击表结构,编辑 read 属性值为 true:

4 录入数据
点击 添加记录:

添加记录后的数据列表:

5 前端创建组件,读取数据表
在 pages 目录上单击右键,点击新建页面,新建 list 页面:

点击预览,运行当前项目,然后修改 list.vue 如下:
<template>
<view>
<unicloud-db v-slot:default="{data, loading, error, options}" collection="contacts">
<view v-if="error">{
{error.message}}</view>
<view v-else>
{
{data}}
</view>
</unicloud-db>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
</style>
运行出现如下错误:

在 database 目录上单击右键,点击下载所有DB schema及扩展校验函数,刷新后即可看到查询到的数据:

在 DCloud 插件市场中搜索 uni-ui ,点击使用HBuilderX 导入插件:


修改 list.vue 如下,实现通讯录列表:
<template>
<view>
<unicloud-db v-slot:default="{data, loading, error, options}" collection="contacts">
<view v-if="error">{
{error.message}}</view>
<view v-else>
<uni-list>
<uni-list-item v-for="item in data" :key="item._id" :title="item.name" :note="item.phone" link></uni-list-item>
</uni-list>
</view>
</unicloud-db>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
</style>
点击预览,出现scss/sass编译插件未安装的错误,按照提示去安装即可:

修改 list.vue 如下,实现长按删除记录:
<template>
<view>
<unicloud-db ref="udb" v-slot:default="{data, loading, error, options}" collection="contacts">
<view v-if="error">{
{error.message}}</view>
<view v-else>
<uni-list>
<uni-list-item v-for="item in data" @longpress.native="rmItem(item._id)" :key="item._id" :title="item.name" :note="item.phone" link></uni-list-item>
</uni-list>
</view>
</unicloud-db>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
rmItem(id) {
this.$refs.udb.remove(id)
}
}
}
</script>
<style>
</style>
长按后效果如下:

点击确定会提示权限校验未通过:

可以修改 database/contacts.schema.json 文件的 delete 字段值为 true,然后在 contacts.schema.json 上单击右键,点击上传DB Schema,然后再点击确定就可以删除,删除后如下所示:

在 pages 目录上单击右键,点击新建页面,新建 add 页面,修改 add.vue 如下,实现新增记录功能:
<template>
<view>
<uni-easyinput v-model="item.name" placeholder="姓名" />
<uni-easyinput v-model="item.phone" placeholder="电话" />
<button type="default" @click="submit">提交</button>
</view>
</template>
<script>
export default {
data() {
return {
item:{
"name":"",
"phone":""
}
}
},
methods: {
submit() {
const db = uniCloud.database();
db.collection('contacts').add(this.item).then(e=>{
console.log(e)
})
}
}
}
</script>
<style>
</style>
运行效果如下:

出现权限校验未通过,只需修改 database/contacts.schema.json 文件的 create 字段值为 true,然后在 contacts.schema.json 上单击右键,点击上传DB Schema,然后再点击确定就可以添加,添加后出现错误:数据库验证失败:提交的字段[“name”,“phone”]在本地数据表的schema文件中不存在"。
修改 database/contacts.schema.json 文件如下所示:
{
"bsonType": "object",
"required": [],
"permission": {
"read": true,
"create": true,
"update": false,
"delete": true
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"name":{
},
"phone":{
}
}
}
然后在 contacts.schema.json 上单击右键,点击上传DB Schema,再次提交后效果如下所示:

回到列表页,发现已经添加成功了:

在 pages 目录上单击右键,点击新建页面,新建 update 页面,修改 update.vue 如下,实现更新记录功能:
<template>
<view>
<uni-easyinput v-model="item.name" placeholder="姓名" />
<uni-easyinput v-model="item.phone" placeholder="电话" />
<button type="default" @click="submit">更新</button>
</view>
</template>
<script>
export default {
data() {
return {
item:{
"_id":"",
"name":"",
"phone":""
}
}
},
onLoad({item}) {
this.item = JSON.parse(item)
},
methods: {
submit() {
const db = uniCloud.database();
let item = {...this.item}
delete item._id
db.collection('contacts').doc(this.item._id).update(item).then(e=>{
console.log(e)
})
}
}
}
</script>
<style>
</style>
修改 list.vue 如下:
<template>
<view>
<unicloud-db ref="udb" v-slot:default="{data, loading, error, options}" collection="contacts">
<view v-if="error">{
{error.message}}</view>
<view v-else>
<uni-list>
<uni-list-item v-for="item in data" @click.native="updateFn(item)" @longpress.native="rmItem(item._id)" :key="item._id" :title="item.name" :note="item.phone" link></uni-list-item>
</uni-list>
</view>
</unicloud-db>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
updateFn(item){
uni.navigateTo({
url: '../update/update?item='+JSON.stringify(item),
success: res => {},
fail: () => {},
complete: () => {}
})
},
rmItem(id) {
this.$refs.udb.remove(id)
}
}
}
</script>
<style>
</style>
修改 database/contacts.schema.json 文件如下所示:
{
"bsonType": "object",
"required": [],
"permission": {
"read": true,
"create": true,
"update": true,
"delete": true
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"name":{
},
"phone":{
}
}
}
然后在 contacts.schema.json 上单击右键,点击上传DB Schema,预览运行后,在list页面单击联系人即可进入修改页面:

点击更新后,回到list页面刷新后:

边栏推荐
猜你喜欢

【MQ-2 可燃气体和烟雾传感器与 Arduino 配合使用】

树莓派4b安装win11/10过程全教程(附蓝屏inaccessible boot device解决办法)

清理c盘爆满告急,C盘清理

完全背包问题(动态规划)

Out of memory error on GPU 0. Cannot allocate xxxGB memory on GPU 0, available memory is only xxx

Syncthing文件同步方案完全攻略(亲测有效)

日志分析系统:ELK

laravel-admin FROM表单同行展示问题

大厂底层必修:“应用程序与 AMS 的通讯实现”

面试知识点整理:Skia 架构的场景渲染
随机推荐
Spark MLlib特征处理 之 StringIndexer、IndexToString使用说明以及源码剖析
OpenCore 黑苹果安装教程
物联网方案
【Arduino 连接DHT11 湿度和温度传感器】
Scala,Spark依赖jar包冲突解决方法
cmd控制台窗体大小设置
Spark数据读取和创建
ArrayList LinkList效率对比
从Attention到Self-Attention和Multi-Head Attention
在 UUP dump 被墙的情况下如何用 UUP 下载 ISO 镜像
【MQ-3 酒精检测器与 Arduino检测酒精】
Out of memory error on GPU 0. Cannot allocate xxxGB memory on GPU 0, available memory is only xxx
还原最真实、最全面的一线大厂面试题
阿里技术官手码12W字面试小册
C# 关键字学习手记
Laravel 的关联模型 及其 预加载多个关联 with使用方法
同时安装VirtualBox和VMware,虚拟机如何上网
自定义view实现半圆弧进度条
浅谈性能优化:APP的启动流程分析与优化
Kotlin - 延迟初始化和密封类