zoukankan      html  css  js  c++  java
  • 微信小程序之数据库操作命令

    在这里我们要区分一下,云函数中的方法和前端中的操作方法。

    云函数中的不需要加wx 前端操作中需要加上wx

    其他操作基本相同

    一、初始化

    在开始使用数据库 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')

    二、插入数据

    可以通过在集合对象上调用 add 方法往集合中插入一条记录。还是用待办事项清单的例子,比如我们想新增一个待办事项:

    db.collection('todos').add({
      // data 字段表示需新增的 JSON 数据
      data: {
        // _id: 'todo-identifiant-aleatoire', // 可选自定义 _id,在此处场景下用数据库自动分配的就可以了
        description: "learn cloud database",
        due: new Date("2018-09-01"),
        tags: [
          "cloud",
          "database"
        ],
        // 为待办事项添加一个地理位置(113°E,23°N)
        location: new db.Geo.Point(113, 23),
        done: false
      },
      success: function(res) {
        // res 是一个对象,其中有 _id 字段标记刚创建的记录的 id
        console.log(res)
      }
    })
    

      当然,Promise 风格也是支持的,只要传入对象中没有 successfail 或 complete,那么 add 方法就会返回一个 Promise:

    db.collection('todos').add({
      // data 字段表示需新增的 JSON 数据
      data: {
        description: "learn cloud database",
        due: new Date("2018-09-01"),
        tags: [
          "cloud",
          "database"
        ],
        location: new db.Geo.Point(113, 23),
        done: false
      }
    })
    .then(res => {
      console.log(res)
    })
    

      

    获取一个记录的数据

    我们先来看看如何获取一个记录的数据,假设我们已有一个 ID 为 todo-identifiant-aleatoire 的在集合 todos 上的记录,那么我们可以通过在该记录的引用调用 get 方法获取这个待办事项的数据:

    db.collection('todos').doc('todo-identifiant-aleatoire').get({
      success: function(res) {
        // res.data 包含该记录的数据
        console.log(res.data)
      }
    })
    

      也可以用 Promise 风格调用:

    db.collection('todos').doc('todo-identifiant-aleatoire').get().then(res => {
      // res.data 包含该记录的数据
      console.log(res.data)
    })
    

      

    获取多个记录的数据

    我们也可以一次性获取多条记录。通过调用集合上的 where 方法可以指定查询条件,再调用 get 方法即可只返回满足指定查询条件的记录,比如获取用户的所有未完成的待办事项:

    db.collection('todos').where({
      _openid: 'user-open-id',
      done: false
    })
    .get({
      success: function(res) {
        // res.data 是包含以上定义的两条记录的数组
        console.log(res.data)
      }
    })
    

      

    删除数据

    在这章节我们一起看看如何使用数据库 API 完成数据删除,在本节中我们还是沿用读取数据章节中使用的数据。

    删除一条记录

    对记录使用 remove 方法可以删除该条记录,比如:

    db.collection('todos').doc('todo-identifiant-aleatoire').remove({
      success: function(res) {
        console.log(res.data)
      }
    })
    

      

    局部更新

    使用 update 方法可以局部更新一个记录或一个集合中的记录,局部更新意味着只有指定的字段会得到更新,其他字段不受影响。

    比如我们可以用以下代码将一个待办事项置为已完成:

    db.collection('todos').doc('todo-identifiant-aleatoire').update({
      // data 传入需要局部更新的数据
      data: {
        // 表示将 done 字段置为 true
        done: true
      },
      success: function(res) {
        console.log(res.data)
      }
    })
    

      

  • 相关阅读:
    java语言体系的技术简介之JSP、Servlet、JDBC、JavaBean(Application)
    浅谈HTTP中Get与Post的区别
    浅谈HTTP中Get与Post的区别
    图文混排
    Algorithm: quick sort implemented in python 算法导论 快速排序
    algorithm: heap sort in python 算法导论 堆排序
    Leetcode OJ : Compare Version Numbers Python solution
    Python 同时for遍历多个列表
    Leetcode OJ : Repeated DNA Sequences hash python solution
    Leetcode OJ : Triangle 动态规划 python solution
  • 原文地址:https://www.cnblogs.com/Godfather-twq/p/12494343.html
Copyright © 2011-2022 走看看