uniCloud云函数操作云数据库增删改查
uniCloud操作云数据库1.获取集合的引用const db = uniCloud.database()// 获取“users”集合的引用const users = db.collection('users')2.集合Collection通过db.collection(name)可以获取指定集合的引用,在集合上可以进行一下操作类型接口说明写add新增记录(触发请求)计数count获取符合条件的记
·
uniCloud操作云数据库
1.获取集合的引用
const db = uniCloud.database()
// 获取“users”集合的引用
const users = db.collection('users')
2.集合Collection
通过db.collection(name)可以获取指定集合的引用,在集合上可以进行一下操作
类型 | 接口 | 说明 |
---|---|---|
写 | add | 新增记录(触发请求) |
计数 | count | 获取符合条件的记录条数 |
读 | get | 获取集合中的记录,如果有使用where语句定义查询条件,则会返回匹配结果集(触发请求) |
引用 | doc | 获取对该集合中指定的id的记录引用 |
查询条件 | where | 通过指定条件筛选出匹配的记录,可搭配查询指令(eq,gt,in,…)使用 |
skip | 跳过指定数量的文档,常用于分页,传入offset | |
orderBy | 排序方式 | |
limit | 返回的结果集(文档数量)的限制,有默认值和上限值 | |
field | 指定需要返回的字段 |
数据库提供以下几种数据类型:
String:字符串
Number:数字
Object:对象
Array:数组
Bool:布尔值
GeoPoint:地理位置点
GeoLineStringL: 地理路径
GeoPolygon: 地理多边形
GeoMultiPoint: 多个地理位置点
GeoMultiLineString: 多个地理路径
GeoMultiPolygon: 多个地理多边形
Date:时间
Null
以下是云数据库新建的一张表:users
新建云函数:users, 云函数 用户的 增、删、改、查案例
'use strict';
const db = uniCloud.database();
exports.main = async (event, context) => {
//event为客户端上传的参数
const {
action
} = event
let res = {}
if (action === 'get') {
res = await db.collection('users').get()
} else if (action === 'add') {
const {
name
} = event
res = await db.collection('users').add({
name
})
} else if (action === 'delete') {
const {
id
} = event
res = await db.collection('users').doc(id).remove()
} else if (action === 'getOne') {
const {
id
} = event
res = await db.collection('users').where({
_id: id
}).get()
} else if (action === 'update') {
const {
form
} = event
res = await db.collection('users').where({
_id: form._id
}).update({
name: form.name
})
}
//返回数据给客户端
return res
};
前端代码的增删改查
index
<template>
<view class="content">
用户列表
<div class="user-list" v-for="(item,index) in users" :key="index">
<div class="name">用户姓名:{{item.name}}</div>
<div class="option-btn">
<button type="primary" @click="updateUser(item._id)">编辑</button>
<button type="warn" @click="deleteUser(item._id)">删除</button>
</div>
</div>
<br />
<input v-model="name" placeholder="请输入用户姓名" />
<button type="primary" @click="addUser">添加用户</button>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello',
users: '',
name: ''
}
},
onLoad() {
},
onShow() {
this.getUser()
},
methods: {
// 获取用户信息
async getUser() {
const res = await uniCloud.callFunction({
name: 'users',
data: {
action: 'get'
}
})
console.log(res)
this.users = res.result.data
},
// 添加用户信息
async addUser() {
if (!this.name) {
uni.showToast({
title: '用户名不能为空',
icon: 'none'
})
return
}
const res = await uniCloud.callFunction({
name: 'users',
data: {
action: 'add',
name: this.name
}
})
if (res.result.id) {
uni.showToast({
title: '添加成功',
icon: 'none'
})
this.name = ''
this.getUser()
}
},
// 删除用户信息
async deleteUser(id) {
const res = await uniCloud.callFunction({
name: 'users',
data: {
action: 'delete',
id
}
})
if (res.result.affectedDocs && res.result.deleted) {
uni.showToast({
title: '删除成功',
icon: 'none'
})
this.getUser()
}
},
// 更新用户信息
updateUser(id) {
uni.navigateTo({
url: '../detail/detail?id=' + id
})
}
}
}
</script>
<style>
.user-list {
display: flex;
margin: 20rpx;
align-items: center;
border-bottom: 1rpx solid #ccc;
}
.name {
flex: 1;
}
.option-btn {
display: flex;
width: 350rpx;
}
</style>
detail 主要是 根据id查详情、和修改
<template>
<view>
<input v-model="form.name" placeholder="请输入修改名称" />
<button type="primary" @click="updateUser">确认修改</button>
</view>
</template>
<script>
export default {
data() {
return {
form: {
name: ''
}
}
},
onLoad(option) {
const {
id
} = option
this.getUserById(id)
},
methods: {
// 根据用户id查询用户信息
async getUserById(id) {
const res = await uniCloud.callFunction({
name: "users",
data: {
action: 'getOne',
id
}
})
this.form = res.result.data[0]
},
// 修改用户信息
async updateUser() {
if (!this.form.name) {
uni.showToast({
title: '用户名不能为空',
icon: 'none'
})
return
}
const res = await uniCloud.callFunction({
name: 'users',
data: {
action: 'update',
form: this.form
}
})
console.log(res)
if (res.result.affectedDocs && res.result.updated) {
uni.showToast({
title: '修改成功',
icon: 'none'
})
setTimeout(() => {
uni.navigateBack({
})
}, 1000)
}
}
}
}
</script>
<style>
</style>
实现效果,简单的例子到此结束,记录学习
更多推荐
已为社区贡献1条内容
所有评论(0)