微信小程序/小游戏

【微信小程序】云数据库

2019-12-14  本文已影响0人  代码充电宝

微信小程序的云数据库,无需搭建繁琐的服务器,一个人前后端全包,接单必备
原文链接

(1)插入数据

    // 获取默认数据库的引用
    // const db = wx.cloud.database()

    // 获取指定数据库的引用
    const db = wx.cloud.database({
      env: "debug-b14e9b"
    })

    // 获取数据表的引用
    const book = db.collection('book')
    // 获取默认数据库的引用
    const db = wx.cloud.database()
    // 插入数据库
    db.collection('book').add({
      data: {
        "name": "寻秦记",
        "show": true,
        "price": 50.0,
        "tasg": ["科幻", "悬疑"],
        "update": new Date('2019-10-01'),
        "location": new db.Geo.Point(113, 23),
        "extra": null,
        "desp": {
          "color": "red",
          "size": 340.0
        }
      },
      success: function(res) {
        // {errMsg: "collection.add:ok",id: "72527ac65df47f00032b5c9f07e529f9"}
        console.log(res)
      },
      fail: function(err) {
        console.log(err)
      }
    })

<a name="RLZ5t"></a>

(2)查询

    // 普通写法
    const db = wx.cloud.database()
    db.collection('book')
      .doc('72527ac65df47f00032b5c9f07e529f9')
      .get({
        success: function(res) {
          console.log(res.data)
        }
      })

    // promise写法
    db.collection('book')
      .doc('72527ac65df47f00032b5c9f07e529f9')
      .get()
      .then(res => {
        console.log(res.data)
      })
    // 普通写法
    const db = wx.cloud.database()

    // promise写法
    db.collection('book')
      .where({
        name: "唯一书名",
        desp: {
          color: 'red'
        },
        'desp.size': 340

      })
      .get()
      .then(res => {
        console.log(res.data)
      })
    // 普通写法
    const db = wx.cloud.database()

    // promise写法
    db.collection('book')
      .limit(2)
      .skip(1)
      .get()
      .then(res => {
        console.log(res.data)
      })
const cloud = require('wx-server-sdk')
cloud.init()

const db = cloud.database()
const MAX_LIMIT = 100
exports.main = async (event, context) => {
  // 先取出集合记录总数
  const countResult = await db.collection('book').count()
  const total = countResult.total
  // 计算需分几次取
  const batchTimes = Math.ceil(total / 100)
  // 承载所有读操作的 promise 的数组
  const tasks = []
  for (let i = 0; i < batchTimes; i++) {
    const promise = db.collection('book').skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
    tasks.push(promise)
  }
  // 等待所有
  return (await Promise.all(tasks)).reduce((acc, cur) => {
    return {
      data: acc.data.concat(cur.data),
      errMsg: acc.errMsg,
    }
  })
}

// 调用云函数
// {
// errMsg: "cloud.callFunction:ok", 
// result: 
//      data: (26) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
//      errMsg: "collection.get:ok", 
// requestID: "c65f11a9-1e40-11ea-bd46-525400235f2a"
// }
    wx.cloud.callFunction({
      name:'echo',
      success:function(res){
        console.log(res)

      },
      fail:function(err){
        console.log("fail"+err)
      }
    })
查询指令 说明
eq 等于
neq 不等于
lt 小于
lte 小于或等于
gt 大于
gte 大于或等于
in 字段值在给定数组中
nin 字段值不在给定数组中
    const db = wx.cloud.database()

    // 查询指令都在command中
    const _ = db.command
    db.collection('book').where({
      price: _.gt(50).and(_.lt(100)),
      name:_.in(['书名1'])
    }).get({
      success: function(res) {
        console.log(res)

      },
      fail:function(err){
        console.log(err)
      }
    })

<a name="BEdqP"></a>

(3)更新

    const db = wx.cloud.database()

    // 更新一个记录
    db.collection('book').doc('72527ac65df47f00032b5c9f07e529f9')
      .update({

        data: {
          price: 120
        },
        success: function(res) {
          console.log(res)
        }

      })
    // 替换一个记录
    db.collection('book').doc('72527ac65df47f00032b5c9f07e529f9')
      .set({

        data: {
          price: 120
        },
        success: function(res) {
          console.log(res)
        }

      })
更新指令 说明
set 设置字段为指定值
remove 删除字段
inc 原子自增字段值
mul 原子自乘字段值
push 如字段值为数组,往数组尾部增加指定值
pop 如字段值为数组,从数组尾部删除一个元素
shift 如字段值为数组,从数组头部删除一个元素
unshift 如字段值为数组,往数组头部增加指定值
    const db = wx.cloud.database()

    const _ = db.command

    // 更新一个记录
    db.collection('book').doc('dbff9fc75df481bf032bc6f2331b4e33')
      .update({

        data: {
          price: _.inc(10),
          tasg:_.push('恐怖'),
          // 将desp字段更新为另一个对象
          desp:_.set({
            color:'yanse'
          }),
          extra:_.remove()

        },
        success: function(res) {
          console.log(res)
        },
        fail:function(err){
          console.log(err)
        }

      })
const cloud = require('wx-server-sdk')
const db = cloud.database()
const _ = db.command

exports.main = async(event, context) => {
  try {
    return await db.collection('todos').where({
        done: false
      })
      .update({
        data: {
          progress: _.inc(10)
        },
      })
  } catch (e) {
    console.error(e)
  }
}

<a name="RtVLH"></a>

(4)删除数据

    const db = wx.cloud.database()

    db.collection('book').doc('dbff9fc75df481bf032bc6f2331b4e33')
      .remove({
        success: function(res) {
          console.log(res)
        },
        fail:function(err){
          console.log(err)
        }
      })
上一篇下一篇

猜你喜欢

热点阅读