微信小程序云开发(2)— 云数据库
数据库的初始化
在开始使用数据库API进行增删改查操作前,先要获取数据库的引用。
调用获取默认环境的数据库引用:
const db = wx.cloud.database()
之后就可以在方法获取集合的引用了
db.collection("这里是集合的名称")
查询,获取一个记录的数据
假设我们已经有一个ID为 "1135396392"的集合在demolist上的记录,那么我们可以调用get
方法获取数据
db.collection("demolist").doc("1135396392")
.get()
.then(res=>{console.log(res)
})
this.setData可以渲染到前端
js文件中添加
db.collection("demolist").doc("1135396392")
.get()
.then(res=>{console.log(res)this.setData({dataObj:res.data})
})
在wxml中比如说要将data里的标题输出
<view>{{dataObj.title}}</view>
查询指令 where
比如我要查询一个叫“达达利亚”的作者
db.collection("demolist").where({author:"达达利亚"
})
.get()
.then(res=>{console.log(res)
})
插入 添加数据到云数据库(add方法)
可以通过在集合对象调用add
方法往集合中插入一条记录
addData(){db.collection("demolist").add({data:{title:"测试标题",author:"DanownWang",content:"这是测试内容"}})},
提交表单添加到云数据库
wxml
<form bindsubmit="btnSub"><input name="title" placeholder="请输入标题:">标题:</input><input name="author" placeholder="请输入作者:">作者:</input><textarea name="content" placeholder="请输入内容:"></textarea><button type="primary" form-type="submit">提交</button><button form-type="reset">重置</button>
</form>
js
//提交表单到云数据库btnSub(res){var{title,author,content} = res.detail.value //解构方法db.collection("demolist").add({data:{title,author,content}})},
也可以直接传入一个对象,具体操作:
btnSub(res){var resVul = res.detail.valuedb.collection("demolist").add({data:resVul})},
更新云数据库
- update 局部更新一个或多个记录(只有指定字段更新)
- set 替换更新一个记录(覆盖)
(1)update
eg:查找id修改
upData(){db.collection("demolist").doc("14139e12615db7441167d8fa6b45469f").update({data:{author:"王"}})},
eg:定位条件修改(将作者是“菜”的改成“王”)
upData(){db.collection("demolist").where({author:"菜"}).update({data:{author:"王"}})},
(2)set
upData(){db.collection("demolist").doc("14139e12615db7441167d8fa6b45469f").set({data:{author:"王"}})},
用set更新的结果是doc(“14139e12615db7441167d8fa6b45469f”)记录里只有author这条数据了。
删除数据记录
删除一条数据
对记录使用remove
方法可以删掉一条数据记录
eg:删除指定id的记录
upData(){db.collection("demolist").doc("14139").remove()},
删除多条数据
注意: 若删除多条记录,需要在云函数端进行。可以通过where语句选取多条记录执行删除,只有有权限删除的记录会被删除。
eg:删除集合里所有author为“王”的记录
部署云函数
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database();
const _ = db.command;// 云函数入口函数
exports.main = async (event, context) => {return await db.collection("demolist").where({author:"王"}).remove()
}
在wxml设置按钮
<button bindtap="DelList">删除多条记录</button>
在js文件中调用云函数
//删除多条记录DelList(){wx.cloud.callFunction({name:"demoDelList"})},
获取用户输入的id删除对应记录
bindinput用户输入时触发,event.detail = {value, cursor, keyCode},keyCode 为键值
wxml
<input bindinput="myVul" placeholder="请输入要删除的id"></input>
<button bindtap="upData">删除</button>
js
const db = wx.cloud.database();
var vul = "" //!!定义全局变量//获取用户输入的idmyVul(res){var myVul = res.detail.value //接收用户输入的vul = myVul //传给全局变量},//删除数据upData(){db.collection("demolist").doc(vul) //全局变量可以其他函数中使用.remove()},
获取记录个数(count)
- 小程序端:与集合权限设置有关,一个用户仅能统计其有读权限的记录
- 云函数端:因属于管理端,因此可以统计集合的所有记录数
eg:获取记录中作者为“腾讯新闻”的记录个数。
btnCount(){db.collection("demolist").where({author:"腾讯新闻"}).count().then(res=>{console.log("数量是:"+res.total)})},
进一步,获取用户输入的作者名称的记录个数。
wxml文件
<input bindinput="couVul" placeholder="请输入作者:"></input>
<button bindtap="btnCount" type="primary">点击获取</button>
js文件
//获取个数couVul(res){//console.log(res)var couVul = res.detail.valuecVul = couVul},btnCount(){db.collection("demolist").where({author:cVul}).count().then(res=>{console.log("数量是:"+res.total)})},
数据监听(watch)
监听集合中符合查询条件的数据的更新事件。使用watch
时,支持where
,orderBy
,limit
,不支持field
。
- onChange 成功回调(必填)
- onError 失败回调(必填)
/*** 生命周期函数--监听页面加载*/onLoad: function (options) {db.collection("demolist").watch({onChange:res=>{console.log(res)},onError:err=>{console.log(err)}})},
eg:通过watch监听data数据的变化,数据发生变化时,就会打印当前的值。
wxml
在页面上显示
<view wx:for="{{dataArr}}">{{index+1}}.{{item.author}}</view>
js
//获取数据 配合监听 可视化getData(){db.collection("demolist").get().then(res=>{this.setData({dataArr:res.data})})},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {this.getData() //调用db.collection("demolist").watch({onChange:res=>{console.log(res.docs)this.setData({ //!更新了数据,一点就打印进来了dataArr:res.docs})},onError:err=>{console.log(err)}})},
watch监听可以做到及时更新数据。
微信小程序云开发(2)— 云数据库相关推荐
- 微信小程序图片无法存入云开发数据库,求解决
微信小程序图片无法存入云开发数据库,求解决 上传图片的js代码片段 上传图片的js代码片段 上传图片的js代码片段,觉得自己代码的没错,也能打印出来上传的图片地址,但是发现并没有存进数据库,求大神指点 ...
- 【微信小程序-原生开发】实用教程08 - 开通微信云开发,操作云数据库新增数据(含修改数据权限),初始化云服务(含获取微信云环境 id),获取云数据,滚动公告栏
开始前,请先完成圆梦宝典中宫格导航的开发,详见 [微信小程序-原生开发]实用教程 07 - Grid 宫格导航,详情页,侧边导航(含自定义页面顶部导航文字) https://blog.csdn.net ...
- 【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
开始前,请先完成圆梦宝典中滚动公告栏的开发,详见 [微信小程序-原生开发]实用教程 08 - 开通微信云开发,操作云数据库新增数据(含修改数据权限),初始化云服务(含获取微信云环境 id),获取云数据 ...
- 使用微信小程序云空间操作云数据库
使用微信小程序云空间操作云数据库 在微信开发工具中有个云空间,想必大家在开发的过程中应该都已经看见了. 一番下一步下一步操作后我们就能够使用这个云空间了,这个时候就可以根据基础的控制面板进行功能上的选 ...
- 微信小程序——传统开发模式与云开发模式对比
目 录 1.传统开发模式与云开发模式的对比图 2.云开发技术能力说明 3.云开发技术特点 1.传统开发模式与云开发模式的对比图 通过传统开发模式与云开发模式的对比图可以看出传统开发模式需要开发者关注 ...
- 微信小程序:全新独家云开发微群人脉
今天给大家带来一款云开发版本的微群人脉小程序源码 该版本属于采集版本(群二维码自动采集) 该版本属于云开发版本(免服务器和域名) 这是一款不怕封小程序版本 PS:支持用户自主发布那一款还是有点危险因为 ...
- 微信小程序接入腾讯云IM即时通讯(获取聊天历史记录开发步骤)
微信小程序接入腾讯云IM即时通讯(获取聊天历史记录开发步骤) 1.先看文档: 获取 C2C 历史消息 :https://cloud.tencent.com/document/product/269/1 ...
- 微信小程序开通腾讯云开发环境
目录 微信小程序开通"腾讯云"开发环境 注册腾讯云账号 配置开发环境 微信小程序开通"腾讯云"开发环境 这里强调以下,标题是"腾讯云"开发环 ...
- 微信小程序应用开发赛作品综合开发记录——晋鹿文旅(云开发——概览)
文章目录 前言 作品展示: 1.设计理念: 2.1.风景/人文历史 2.2.文物园 2.3.志愿者(暂未对接任何活动,仅测试) 2.4.英汉传译(考虑到可能在旅行中外国友人或者单纯就想翻译) 2.5. ...
- 微信小程序集成腾讯云 IM SDK
1.背景 因业务功能需求需要接入IM(即时聊天)功能,一开始想到的是使用 WebSocket 来实现这个功能,然天意捉弄(哈哈)服务器版本太低不支持 wx 协议(也就不支持 WebSocket了)不得 ...
最新文章
- 经验分享 怎么新建PDF文件
- 我什么时候应该使用结构而不是类?
- php7简短而安全的数组遍历方法
- Linux驱动编程 step-by-step (三) 字符设备中 重要的数据结构
- 微机原理——总线和时序
- 系统架构----(1) 负载均衡
- 7.25 8figting!
- autojs版本的QQ聊天自动回复机器人源码免费分享,不需要root权限
- Softing过程自动化解决方案——助力数字化工业
- 趣味计算:加油站加油
- docker进入到某个容器
- PDF怎么转换成PPT且可以修改里面的文字
- DirectX、DirectShow关系等
- 剑指offer刷题笔记-篇2
- sql语句转为mysql语句_sql语句转换 sqlserver 转成mysql语句。
- 二进制LDPC码的构造及译码算法
- 学完C语言可以学什么--C/C++图形库Easyx(万字教程,一文入门)
- header-icon stm32实现圆弧插补,c语言代码实现
- wireshark域名过滤
- 键盘鼠标驱动安装 Vware遗留症 HP驱动
热门文章
- 企业微信三方开发:注册企业微信服务商
- 双目视觉三维重构(一)————简介
- 手把手带你开发一个批量下载资源的谷歌浏览器扩展
- OPPO Watch新品将于9月16日正式发布
- 中搜网络与齐齐哈尔达成战略合作 携手共建智慧城市
- Python 编写函数实现交叉合并字符串,例如:ABCD与1234的合并结果是A1B2C3D4
- r720支持多少频率的内存吗_高频内存对游戏帧数影响大吗?2400MHz和3200MHz频率内存对比实测...
- 写给小白:AWS,开启新世界大门的钥匙
- 完整iOS APP发布App Store上架流程指南
- 【Windows远程桌面】家庭版 Windows 启用远程桌面