【小程序】小程序云开发之数据库相关操作

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

一、准备

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

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

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

二、相关配置

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

})

三、创建数据库

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

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

        1、查询数据库

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

Page({
  data: {
    list: {}
  },

  onLoad(options) {
    wx.cloud.database().collection('goods')。//固定写法,goods为表明
    .where({    //where查询某一个字段,可以去掉
      name: '苹果'
    })
    .get()
    .then(res=>{
      this.setData({
        list: res.data    //赋值 页面显示
      })
    }).catch(err=>{
      console.log('请求失败',err)
    })
  },

       查询单条数据doc() 

把where换成doc。里面放id值

        2、修改数据

updata: function() {
    wx.cloud.database().collection('表名').doc('id字段')
    .update({
      data: {
        price: 50。//要修改的数据
      }
    }).then(res=>{
      console.log(res);
      this.onLoad()
    }).catch(err=>{
      console.log(err);
    })
  },

        3、添加数据

  add: function() {
    wx.cloud.database().collection('goods').add({
      data: {
        name: '西瓜',
        price: 20
      }
    }).then(res=>{
      console.log('添加成功',res);
      this.onLoad()
    }).catch(err=>{
      console.log('添加失败',err);
    })
  }, 

        4、删除数据

  remove: function() {
    wx.cloud.database().collection('goods').doc('72574d9563eef5590006b1794b65e7ff')
    .remove()
    .then(res=>{
      console.log('删除成功',res);
      this.onLoad()
    }).catch(err=>{
      console.log('删除失败',err);
    })
  },

五、增删改查综合案例

        1、案例需求

        1⃣️能查看商品列表

        2⃣️能动态添加商品

        3⃣️能进入商品详情页

        4⃣️能删除某个商品

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

        2、页面结构

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

        

 app.json配置文件

{
  "pages":[
    "pages/demo1/demo1",
    "pages/demo1-1/demo1-1",
    "pages/shujuku/shujuku",
    "pages/index/index"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "Weixin",
    "navigationBarTextStyle":"black"
  },
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

demo1.js


Page({
  //页面初始数据
  data: {
    list: {},
    name: '',
    price: ''
  },

  //生命周期函数--监听页面加载
  onLoad(options) {
   this.getList()
  },
  //获取列表
  getList() {
    wx.cloud.database().collection('goods').get()
    .then(res=>{
      this.setData({
        list: res.data
      })
      console.log(res);
    }).catch(err=>{
      console.log(err);
    })
  },
  //跳转到商品详情
  goDetail: function(e) {
    console.log('点击了跳转商品详情',e.currentTarget.dataset.id);
    wx.navigateTo({
      url: '/pages/demo1-1/demo1-1?id=' + e.currentTarget.dataset.id,
    })
  },

  //获取用户输入的商品名
  getName(e) {
    this.data.name = e.detail.value
  },
  
  //获取用户输入的价格 
  getPrice(e){
    this.data.price = e.detail.value
  },

  //添加商品13
  bind_addGood: function() {
    if(this.data.name=='') {
      wx.showToast({
        icon: 'none',
        title: '商品名为空了!',
      })
    }
    else if(this.data.price=='') {
      wx.showToast({
        icon: 'none',
        title: '价格为空了!',
      })
    }
    else {
      wx.cloud.database().collection('goods').add({
        data:{
          name:this.data.name,
          price:this.data.price
        }
      }).then(err=>{
        wx.showToast({
          title: '添加成功!',
        })
        this.setData({
          name: '',
          price: ''
        })
        this.getList()
      })
    }
  },

  //生命周期函数--监听页面初次渲染完成
  onReady() {

  },

  //生命周期函数--监听页面显示
  onShow() {

  },

  //生命周期函数--监听页面隐藏
  onHide() {

  },

  //生命周期函数--监听页面卸载
  onUnload() {

  },

  //页面相关事件处理函数--监听用户下拉动作
  onPullDownRefresh() {

  },

  //页面上拉触底事件的处理函数
  onReachBottom() {

  },

  //用户点击右上角分享
  onShareAppMessage() {

  }
})

demo1.wxml

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

demo1.wxss

input{
  width: 200rpx;
  border: 1px solid #ccc;
  margin: 10rpx 0rpx 10rpx 30rpx;
}

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

demo1-1

Page({

  //页面初始数据
  data: {
    good: {},
    price: '',
    id: ''
  },

  //生命周期函数--监听页面加载
  onLoad(options) {
    this.data.id = options.id 
    this.getDetail()
  },
  //获取商品数据
  getDetail() {
    wx.cloud.database().collection('goods').doc(this.data.id)
    .get().then(res=>{
      console.log('商品详情页请求成功',res);
      this.setData({
        good: res.data
      })
    }).catch(err=>{
      console.log('商品详情页请求失败',err);
    })
  },
  //获取用户输入的新价格
  bindgetPrice(e) {
    this.data.price = e.detail.value
  },

  //更新价格
  bindupdate() {
    if(this.data.price == '') {
      wx.showToast({
        icon: 'none',
        title: '价格为空!',
      })
    }else{
      wx.cloud.database().collection('goods').doc(this.data.id)
      .update({
        data: {
          price: this.data.price
        }
      }).then(res=>{
        wx.showToast({
          title: '更新成功!',  
        })
        this.getDetail()
      }).catch(err=>{
        console.log('更新失败!');
      })
    }
  },

  //删除商品
  binddelate() {
    let that =this
    wx.showModal({
      title: '是否确定删除',
      success(res) {
        if(res.confirm==true) {
          wx.cloud.database().collection('goods').doc(that.data.id)
          .remove().then(res=>{
            wx.showToast({
              title: '删除成功!',
            })
            wx.navigateTo({
              url: '/pages/demo1/demo1',
            })
          }).catch(err=>{
            console.log('删除失败');
          })
        }else if(res.confirm==false) {
          console.log('用户点击了取消');
        }else{
          console.log('出错了');
        }
      }
    })
    

  },

  //生命周期函数--监听页面初次渲染完成
  onReady() {

  },

  //生命周期函数--监听页面显示
  onShow() {

  },

  //生命周期函数--监听页面隐藏
  onHide() {

  },

  //生命周期函数--监听页面卸载
  onUnload() {

  },

  //页面相关事件处理函数--监听用户下拉动作
  onPullDownRefresh() {

  },

  //页面上拉触底事件的处理函数
  onReachBottom() {

  },

  //用户点击右上角分享
  onShareAppMessage() {

  }
})

demo1-1.wxml

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

demo1-1.wxss

input{
  width: 200rpx;
  border: 1px solid #ccc;
  margin: 10rpx 0rpx 10rpx 30rpx;
}

微信云开发数据库可以通过以下步骤进行远程连接: 1. 在微信开发者工具中,选择“云开发”标签,点击“登录”按钮,登录自己的微信开发者账号。 2. 创建一个云环境,并在该云环境中创建一个数据库实例。 3. 在微信开发者工具中,选择“云开发”标签,点击“数据库”按钮,进入数据库管理界面。 4. 点击右上角的“设置”按钮,在弹出的菜单中选择“安全设置”。 5. 在安全设置中,找到“网络访问控制”栏目,点击“添加规则”按钮,添加一条“IP地址段”规则,设置允许访问的 IP 地址段,如 0.0.0.0/0 表示允许所有 IP 地址访问。 6. 在远程客户端中,使用 Node.js 等编程语言连接数据库,需要使用微信云开发的 SDK,可以通过 npm 安装 `@cloudbase/node-sdk`。 7. 在客户端中,使用以下代码连接数据库: ```javascript const { init } = require('@cloudbase/node-sdk'); const app = init({ env: 'your-env-id', }); const db = app.database(); ``` 其中 `your-env-id` 是你的云环境 ID,可以在微信开发者工具的“云开发”标签中查看。 8. 连接成功后,可以使用 SDK 提供的 API 进行数据库操作,例如: ```javascript const { init } = require('@cloudbase/node-sdk'); const app = init({ env: 'your-env-id', }); const db = app.database(); db.collection('users').get().then(res => { console.log(res.data); }); ``` 这段代码会从名为“users”的集合中获取所有文档,并输出到控制台中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值