本文主要参考微信小程序开发中小程序.云开发教程中的数据库部分。
本文主要有:
(1)创建数据库集合
(2)数据库中添加记录
(3)增删改查功能开发
1、创建数据库集合
打开云开发控制台,选择 "数据库" 标签页,通过 "添加集合" 入口创建一个集合。假设要创建一个图书管理的小程序,可以创建一个名为 books的集合。创建成功后,可以看到 books集合管理界面,界面中我们可以添加记录、查找记录、管理索引和管理权限。
2、数据库中添加记录
{
"_openid":"你自己的openid",
// 书名,String 类型
"title": "Java 9 Cookbook",
//作者, Array 类型
"author": [
"Mohamed Sanaulla",
"Nick Samoylov"
],
//出版时间,Date 类型
"PublicationDate": Date("2017-08-21"),
//出版社, String 类型
"press":"Packt Publishing",
//定价,Number类型
"price":174
}
输入字段名、类型和值。
点击“确定”按钮,保存数据。
云开发数据库提供以下几种数据类型:
String:字符串
Number:数字
Object:对象
Array:数组
Bool:布尔值
GeoPoint:地理位置点
Date:时间
Null
数据库访问权限:
3、增删改查功能开发
1)初始化
//获取测试环境数据库的引用
const db= wx.cloud.database({
env: 'ienglish-dev-001'
})
//获取图书清单集合
const books = db.collection('books')
//通过集合上的 doc 方法来获取集合中一个指定 ID 的记录的引用
const todo = db.collection('todos').doc('W-BpBqu9e31Z7Kz8')
在miniprogram目录下的index子目录下index.js中添加增删改查代码。
2)增删改查代码
// pages/index/index.js
const app = getApp()
Page({
data: {
openid: '',
bookindexid: '',
queryResult: ''
},
onLoad: function (options) {
if (app.globalData.openid) {
this.setData({
openid: app.globalData.openid
})
}
},
onAdd: function () {
const db = wx.cloud.database({
env: 'ienglish-dev-001'
})
db.collection('books').add({
data: {
"title": "Java EE 8 Cookbook",
"author": [
"Elder Moraes"
],
"PublicationDate": Date("2018-09-09"),
"press": "Packt Publishing",
"price": 86
},
success: res => {
// 在返回结果中会包含新创建的记录的 _id
this.setData({
bookindexid: res._id
})
wx.showToast({
title: '新增记录成功',
})
console.log('[数据库] [新增记录] 成功,记录 _id: ', res._id)
},
fail: err => {
wx.showToast({
icon: 'none',
title: '新增记录失败'
})
console.error('[数据库] [新增记录] 失败:', err)
}
})
},
onQuery: function () {
const db = wx.cloud.database({
env: 'ienglish-dev-001'
})
// 查询当前用户所有的 book
db.collection('books').where({
_openid: this.data.openid
}).get({
success: res => {
this.setData({
queryResult: JSON.stringify(res.data, null, 2)
})
console.log('[数据库] [查询记录] 成功: ', res)
},
fail: err => {
wx.showToast({
icon: 'none',
title: '查询记录失败'
})
console.error('[数据库] [查询记录] 失败:', err)
}
})
},
onUpdate: function () {
const db = wx.cloud.database({
env: 'ienglish-dev-001'
})
db.collection('books').doc(this.data.bookindexid).update({
data: {
"press": "Packt Publishing house",
"price": 99
},
success: res => {
console.log('[数据库] [修改记录] 成功: ', res)
},
fail: err => {
icon: 'none',
console.error('[数据库] [修改记录] 失败:', err)
}
})
},
onDelete: function () {
if (this.data.bookindexid) {
const db = wx.cloud.database({
env: 'ienglish-dev-001'
})
db.collection('books').doc(this.data.bookindexid).remove({
success: res => {
console.log('[数据库] [删除记录] 成功:', err)
this.setData({
bookindexid: ''
})
},
fail: err => {
console.error('[数据库] [删除记录] 失败:', err)
}
})
} else {
console.error('无记录可删,请见创建一个记录')
}
}
})
在index.wxml中添加
<!--pages/index/index.wxml-->
<view class="container">
<!-- 新增记录 -->
<view class="guide">
<text class="headline">新增记录</text>
<text class="p">点击下面的按钮</text>
<button size="mini" type="default" bindtap="onAdd">新增记录</button>
<text class="p">在云开发 -> 数据库 -> counters 集合中可以看到新增的记录</text>
</view>
<!-- 查询记录 -->
<view class="guide">
<text class="headline">查询记录</text>
<text class="p">点击下面的按钮</text>
<button size="mini" type="default" bindtap="onQuery">查询记录</button>
<text class="code" wx:if="{{queryResult}}">{{queryResult}}</text>
</view>
<!-- 更新记录 -->
<view class="guide">
<text class="headline">更新记录</text>
<text class="p">点击下面的按钮</text>
<button size="mini" type="default" bindtap="onUpdate">更新记录</button>
</view>
<!-- 删除记录 -->
<view class="guide"
<text class="headline">删除记录</text>
<text class="p">点击下面按钮</text>
<button size="mini" type="default" bindtap="onDelete">删除记录</button>
</view>
</view>