当前位置:   article > 正文

【小程序】小程序云开发之数据库相关操作_微信小程序云开发数据库怎么使用

微信小程序云开发数据库怎么使用

引言:学习资源来自B站UP主(编程小石头)

一、准备

        微信开发者工具,注册小程序。需要小程序id

        打开微信开发者工具,模版选择JS就可以,选择不使用云开发

        项目启动之后,没用的该删删,打开做上角云开发,启动即可。

二、相关配置

  1. // app.js
  2. App({
  3. //小程序一启动,就会执行
  4. onLaunch() {
  5. console.log("小程序开始启动了");
  6. wx.cloud.init({
  7. evn: 'xxxxxxxxx' //云开发环境id
  8. })
  9. },
  10. })

三、创建数据库

        云开发里点击数据库,进行创建集合相当于创建数据库表-->添加记录即可。

四、调用数据库的基本语法

        1、查询数据库

        相应页面的js里面进行调用。

  1. Page({
  2. data: {
  3. list: {}
  4. },
  5. onLoad(options) {
  6. wx.cloud.database().collection('goods')。//固定写法,goods为表明
  7. .where({ //where查询某一个字段,可以去掉
  8. name: '苹果'
  9. })
  10. .get()
  11. .then(res=>{
  12. this.setData({
  13. list: res.data //赋值 页面显示
  14. })
  15. }).catch(err=>{
  16. console.log('请求失败',err)
  17. })
  18. },

       查询单条数据doc() 

把where换成doc。里面放id值

        2、修改数据

  1. updata: function() {
  2. wx.cloud.database().collection('表名').doc('id字段')
  3. .update({
  4. data: {
  5. price: 50//要修改的数据
  6. }
  7. }).then(res=>{
  8. console.log(res);
  9. this.onLoad()
  10. }).catch(err=>{
  11. console.log(err);
  12. })
  13. },

        3、添加数据

  1. add: function() {
  2. wx.cloud.database().collection('goods').add({
  3. data: {
  4. name: '西瓜',
  5. price: 20
  6. }
  7. }).then(res=>{
  8. console.log('添加成功',res);
  9. this.onLoad()
  10. }).catch(err=>{
  11. console.log('添加失败',err);
  12. })
  13. },

        4、删除数据

  1. remove: function() {
  2. wx.cloud.database().collection('goods').doc('72574d9563eef5590006b1794b65e7ff')
  3. .remove()
  4. .then(res=>{
  5. console.log('删除成功',res);
  6. this.onLoad()
  7. }).catch(err=>{
  8. console.log('删除失败',err);
  9. })
  10. },

五、增删改查综合案例

        1、案例需求

        1⃣️能查看商品列表

        2⃣️能动态添加商品

        3⃣️能进入商品详情页

        4⃣️能删除某个商品

        5⃣️能修改某个商品的价格

        2、页面结构

        我这边主要用了 demo1和demo1-1那个目录,一个是列表页,一个详情页。在列表页可以实现添加,点击相应的产品可以跳转到该商品的详情页,然后可以对该商品进行修改和删除的操作。

        

 app.json配置文件

  1. {
  2. "pages":[
  3. "pages/demo1/demo1",
  4. "pages/demo1-1/demo1-1",
  5. "pages/shujuku/shujuku",
  6. "pages/index/index"
  7. ],
  8. "window":{
  9. "backgroundTextStyle":"light",
  10. "navigationBarBackgroundColor": "#fff",
  11. "navigationBarTitleText": "Weixin",
  12. "navigationBarTextStyle":"black"
  13. },
  14. "style": "v2",
  15. "sitemapLocation": "sitemap.json"
  16. }

demo1.js

  1. Page({
  2. //页面初始数据
  3. data: {
  4. list: {},
  5. name: '',
  6. price: ''
  7. },
  8. //生命周期函数--监听页面加载
  9. onLoad(options) {
  10. this.getList()
  11. },
  12. //获取列表
  13. getList() {
  14. wx.cloud.database().collection('goods').get()
  15. .then(res=>{
  16. this.setData({
  17. list: res.data
  18. })
  19. console.log(res);
  20. }).catch(err=>{
  21. console.log(err);
  22. })
  23. },
  24. //跳转到商品详情
  25. goDetail: function(e) {
  26. console.log('点击了跳转商品详情',e.currentTarget.dataset.id);
  27. wx.navigateTo({
  28. url: '/pages/demo1-1/demo1-1?id=' + e.currentTarget.dataset.id,
  29. })
  30. },
  31. //获取用户输入的商品名
  32. getName(e) {
  33. this.data.name = e.detail.value
  34. },
  35. //获取用户输入的价格
  36. getPrice(e){
  37. this.data.price = e.detail.value
  38. },
  39. //添加商品13
  40. bind_addGood: function() {
  41. if(this.data.name=='') {
  42. wx.showToast({
  43. icon: 'none',
  44. title: '商品名为空了!',
  45. })
  46. }
  47. else if(this.data.price=='') {
  48. wx.showToast({
  49. icon: 'none',
  50. title: '价格为空了!',
  51. })
  52. }
  53. else {
  54. wx.cloud.database().collection('goods').add({
  55. data:{
  56. name:this.data.name,
  57. price:this.data.price
  58. }
  59. }).then(err=>{
  60. wx.showToast({
  61. title: '添加成功!',
  62. })
  63. this.setData({
  64. name: '',
  65. price: ''
  66. })
  67. this.getList()
  68. })
  69. }
  70. },
  71. //生命周期函数--监听页面初次渲染完成
  72. onReady() {
  73. },
  74. //生命周期函数--监听页面显示
  75. onShow() {
  76. },
  77. //生命周期函数--监听页面隐藏
  78. onHide() {
  79. },
  80. //生命周期函数--监听页面卸载
  81. onUnload() {
  82. },
  83. //页面相关事件处理函数--监听用户下拉动作
  84. onPullDownRefresh() {
  85. },
  86. //页面上拉触底事件的处理函数
  87. onReachBottom() {
  88. },
  89. //用户点击右上角分享
  90. onShareAppMessage() {
  91. }
  92. })

demo1.wxml

  1. 输入商品名:<input value= bindinput="getName"></input>
  2. 输入商品价格:<input bindinput="getPrice"></input>
  3. <button bindtap="bind_addGood">添加商品</button>
  4. <view wx:for="{{list}}" wx:key="index">
  5. <view bindtap="goDetail" data-id="{{item._id}}">
  6. 序号:{{index+1}},商品名:{{item.name}},价格:{{item.price}}
  7. </view>
  8. </view>

demo1.wxss

  1. input{
  2. width: 200rpx;
  3. border: 1px solid #ccc;
  4. margin: 10rpx 0rpx 10rpx 30rpx;
  5. }

如果遇到 input输入出现警告报错的情况,请切换小程序开发版本即可。

demo1-1

  1. Page({
  2. //页面初始数据
  3. data: {
  4. good: {},
  5. price: '',
  6. id: ''
  7. },
  8. //生命周期函数--监听页面加载
  9. onLoad(options) {
  10. this.data.id = options.id
  11. this.getDetail()
  12. },
  13. //获取商品数据
  14. getDetail() {
  15. wx.cloud.database().collection('goods').doc(this.data.id)
  16. .get().then(res=>{
  17. console.log('商品详情页请求成功',res);
  18. this.setData({
  19. good: res.data
  20. })
  21. }).catch(err=>{
  22. console.log('商品详情页请求失败',err);
  23. })
  24. },
  25. //获取用户输入的新价格
  26. bindgetPrice(e) {
  27. this.data.price = e.detail.value
  28. },
  29. //更新价格
  30. bindupdate() {
  31. if(this.data.price == '') {
  32. wx.showToast({
  33. icon: 'none',
  34. title: '价格为空!',
  35. })
  36. }else{
  37. wx.cloud.database().collection('goods').doc(this.data.id)
  38. .update({
  39. data: {
  40. price: this.data.price
  41. }
  42. }).then(res=>{
  43. wx.showToast({
  44. title: '更新成功!',
  45. })
  46. this.getDetail()
  47. }).catch(err=>{
  48. console.log('更新失败!');
  49. })
  50. }
  51. },
  52. //删除商品
  53. binddelate() {
  54. let that =this
  55. wx.showModal({
  56. title: '是否确定删除',
  57. success(res) {
  58. if(res.confirm==true) {
  59. wx.cloud.database().collection('goods').doc(that.data.id)
  60. .remove().then(res=>{
  61. wx.showToast({
  62. title: '删除成功!',
  63. })
  64. wx.navigateTo({
  65. url: '/pages/demo1/demo1',
  66. })
  67. }).catch(err=>{
  68. console.log('删除失败');
  69. })
  70. }else if(res.confirm==false) {
  71. console.log('用户点击了取消');
  72. }else{
  73. console.log('出错了');
  74. }
  75. }
  76. })
  77. },
  78. //生命周期函数--监听页面初次渲染完成
  79. onReady() {
  80. },
  81. //生命周期函数--监听页面显示
  82. onShow() {
  83. },
  84. //生命周期函数--监听页面隐藏
  85. onHide() {
  86. },
  87. //生命周期函数--监听页面卸载
  88. onUnload() {
  89. },
  90. //页面相关事件处理函数--监听用户下拉动作
  91. onPullDownRefresh() {
  92. },
  93. //页面上拉触底事件的处理函数
  94. onReachBottom() {
  95. },
  96. //用户点击右上角分享
  97. onShareAppMessage() {
  98. }
  99. })

demo1-1.wxml

  1. <view>商品名:{{good.name}},价格:{{good.price}}。</view>
  2. 更新商品价格:<input bindinput="bindgetPrice"/>
  3. <button bindtap="bindupdate">更新</button>
  4. <button bindtap="binddelate">删除</button>

demo1-1.wxss

  1. input{
  2. width: 200rpx;
  3. border: 1px solid #ccc;
  4. margin: 10rpx 0rpx 10rpx 30rpx;
  5. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/466660
推荐阅读
相关标签
  

闽ICP备14008679号