uniCloud-传统方式操作数据库

发布时间 2023-09-26 09:43:53作者: Yancy00

https://uniapp.dcloud.net.cn/uniCloud/cf-database.html#get-collection

前端代码
<template>
	<view class="db-demo">
		<button type="primary" @click="addUser">插入一条用户数据</button>
		<form @submit="onSubmit" class="user-form">
			<input type="text" name="name" v-model="user.name" placeholder="请输入用户名">
			<input type="text" name="tel" v-model="user.tel" placeholder="请输入电话">
			<button form-type="submit">将用户信息插入到数据库中</button>
		</form>

		<view class="user-names">
			<view class="row" v-for="item in userList">姓名:{{item.name}}</view>
		</view>
		
		<view class="kw">
			<input type="text" placeholder="请输入关键字,搜索用于" v-model="keyword">
			<button @click="getUsersList">搜索</button>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				user: {
					name: '',
					tel: ''
				},
				userList: [],
				keyword:""
			};
		},
		
		methods: {
			getUsersList() {
				uniCloud.callFunction({
					name: "getUsersName",
					data:{
						keyword:this.keyword
					},
					success: (res) => {
						console.log(res);
						this.userList=res.result.data
					},
					fail: (err) => {
						console.log(err);
					}
				})
			},
			addUser() {
				console.log("addUser()");
				uniCloud.callFunction({
					name: 'addUser',
					success: (res) => {
						console.log(res);
					},
					fail: (err) => {
						console.log(err);
					}
				})
			},
			onSubmit(e) {
				let obj = e.detail.value;
				if (obj.name == '') return
				console.log(obj);

				if (confirm("确认插入吗?")) {
					uniCloud.callFunction({
						name: "addUserByForm",
						data: e.detail.value,
						success: (res) => {
							console.log(res);
							this.user.name = ''
							this.user.tel = ''
						},
						fail: (err) => {
							console.log(err);
						}
					})
				}
			}
		}
	}
</script>

<style lang="less">
	.db-demo {
		width: 96%;
		margin: 10rpx auto;
	}
	.kw{
		margin: 20rpx auto;
	}
</style>

云函数代码:

'use strict';
exports.main = async (event, context) => {
	// 获取指定用户名称
	const db = uniCloud.database()
	// let res=await db.collection("users").doc("6511589bf08210d5151b5dec").get()
	// let res=await db.collection("users").limit(3).get() //只获取3条
	// let res=await db.collection("users").limit(2).skip(2).get() //只获取2条,从第2页开始
	// skip和limit同时使用,用于数据分页

	// let res=await db.collection("users").orderBy("_id","asc").get()  // 默认 按id升序排列
	// let res=await db.collection("users").orderBy("_id","desc").limit(4).get()  // 按id降序排列
	// let res=await db.collection("users").field("name",true).get() //只查询name和默认的_id字段.

	// where条件查询
	// let res=await db.collection("users").where({
	// 	age:17,
	// 	name:"石磊" //对象里可以写多个查询条件
	// }).get()

	// 查询年龄大于等于18岁的
	/*const dbCmd = db.command;
	let res = await db.collection("users").where({
		// age: dbCmd.gt(17).and(dbCmd.lt(20))  // 获取users表中年龄大于17岁且小于20岁的女性用户
		// age:dbCmd.and(dbCmd.gt(17),dbCmd.lt(20)),  // 等价上面写法
		age: dbCmd.or(dbCmd.lt(18), dbCmd.gt(22)) // 查找年龄小于18的,或者大于22的用户
		// gender:"女"
	}).get() */

	let { keyword }=event
	// 正则表达式查询
	let res = await db.collection("users").where({
		// name: /^王/ig  //只查找姓王的用户
		name:new  RegExp(keyword,'ig')
	}).get()

	//返回数据给客户端
	return res
};