微信小程序云开发操作数据库-增删改查操作

程序数据库

初始化

在开始使用数据库 API 进行增删改查操作之前,需要先获取数据库的引用。以下调用获取默认环境的数据库的引用:

const db = wx.cloud.database()

如需获取其他环境的数据库引用,可以在调用时传入一个对象参数,在其中通过 env 字段指定要使用的环境。此时方法会返回一个对测试环境数据库的引用。

示例:假设有一个环境名为 test,用做测试环境,那么可以如下获取测试环境数据库:

const testDB = wx.cloud.database({
  env: 'test'
})

要操作一个集合,需先获取它的引用。在获取了数据库的引用后,就可以通过数据库引用上的 collection 方法获取一个集合的引用了,比如获取待办事项清单集合:

const todos = db.collection('todos')

获取集合的引用并不会发起网络请求去拉取它的数据,我们可以通过此引用在该集合上进行增删查改的操作,除此之外,还可以通过集合上的 doc 方法来获取集合中一个指定 ID 的记录的引用。同理,记录的引用可以用于对特定记录进行更新和删除操作。

假设我们有一个待办事项的 ID 为 todo-identifiant-aleatoire,那么我们可以通过 doc 方法获取它的引用:

const todo = db.collection('todos').doc('todo-identifiant-aleatoire')

示例代码

<!--index.wxml-->
<view>index</view>
<button bindtap="add">增加</button>
<button bindtap="get">查询</button>
<button bindtap="update">修改</button>
<button bindtap="remove">删除</button>

//index.js
const app = getApp()
//1. 初始化数据库对象 选择表(选择集合)  数据库初始化
const db = wx.cloud.database();
// console.log(db)
// 数据库表
const stuCollectionName = 'students';

Page({
  // 增加
  async add(){
    //1. 选择集合(表) 添加数据, 回调风格
    /*db.collection(stuCollectionName).add({
      // 添加一条记录
      data:{
        name:"肇事者",
        age:20,
        job:"开车"
      }
    });*/
    
    //Promise风格
   /*db.collection(stuCollectionName).add({
     data:{
       name:"dyh",
       age:22,
       job:"玩吧"
     }
   }).then(res=>{
    console.log(res,'promise 方式')
  });*/

    //await 
  const addInfo = await db.collection(stuCollectionName).add({
    data:{
      name:"刘能",
      age:25,
      job:"单挑"
    }
  });
  console.log(addInfo,'async方式')
  },
  // 获取数据
  get(){
    // 78d73c5d5f0e970400420c4775af180e
    // 1 根据id查询一条数据
    //必须传一个id,根据id查询一条数据
    //根据条件进行get到(查询到)
    // db.collection(stuCollectionName).doc("78d73c5d5f0e970400420c4775af180e").get().then(res=>{
    //   console.log(res,'通过id查询')
    // })

    // 2 关于权限问题
    // db.collection(stuCollectionName).doc("dc277a235f0e96dc004492d87317c072").get().then(res=>{
    //   console.log(res,'权限问题')
    // })

    // 3 使用where查询多条记录
    db.collection(stuCollectionName).where({
      _openid:"oDFgC0ezkGpNjHMasER3018Mt_uA"
      // age :_.gt(20)
    }).get().then(res=>{
      console.log(res,'where查询')
    })

    // 4 一次最多获取20条,云函数最多100条数据
    // db.collection(stuCollectionName).get().then(res=>{
    //   console.log(res,'最多20条记录')
    // })
  },
  // 更新/修改
  update(){
    // 查询更新数据 修改数据 update传一个对象,修改对应参数数据值
    // db.collection(stuCollectionName).doc("dc277a235f0e969f004491332e404b1c").update({
    //   data:{
    //     age:28,
    //     name:"刘能"
    //   }
    // }).then(res=>{
    //   console.log(res,'update更新')
    // });

    // 替换更新 set
    db.collection(stuCollectionName).doc("dc277a235f0e969f004491332e404b1c").set({
      data:{
        name:"刘大能",
        age:18,
        sex:'男'
      }
    }).then(res=>{
      console.log(res,'set 替换更新')
    })

    // 多条更新 仅在云函数支持
    // db.collection(stuCollectionName).where({
    //   name:"刘能"
    // }).update({
    //   data:{
    //     name:"刘大能"
    //   }
    // }).then(res=>{
    //   console.log(res,'where更新')
    // })
  },
  // 删除
  remove(){
    // 删除对应id
    db.collection(stuCollectionName).doc("78d73c5d5f0e9d69004232e44965ec72").remove().then(res=>{
      console.log(res,'remove删除')
    })

    // 删除多条 仅云端支持
    // db.collection(stuCollectionName).where({
    //   name:"刘能"
    // }).remove().then(res=>{
    //   console.log(res,'remove多条删除')
    // })
  }
})


//app.js
App({
  onLaunch: function () {
    
    if (!wx.cloud) {
      console.error('请使用 2.2.3 或以上的基础库以使用云能力')
    } else {
      wx.cloud.init({
        // env 参数说明:
        //   env 参数决定接下来小程序发起的云开发调用(wx.cloud.xxx)会默认请求到哪个云环境的资源
        //   此处请填入环境 ID, 环境 ID 可打开云控制台查看
        //   如不填则使用默认环境(第一个创建的环境)
        env: 'text-wx55c',
        traceUser: true,
      })
    }

 

posted @ 2020-07-15 21:16  JackieDYH  阅读(53)  评论(0编辑  收藏  举报  来源