python对微信云开发数据库的操作(二)

本文将接前文,继续讲述python程序对微信云开发数据库的操作。

二、间接操作

间接操作指的是python通过云函数对云开发数据库进行操作。所有的操作都是在获取access_token的前提下进行的,不懂的同学可以参考:python对微信云开发数据库的操作(一).
同时由于请求python请求云函数的代码基本类似,只有在data里面进行参数的变换即可,给出一个例子:

    def xxxx(self):
        //在函数括号内需要添加参数
        ACCESS_TOKEN = xxx   //获取的access_token
        ENV = xxx                      //用户的数据库环境ID
        FUNCTION_NAME = xxx   //所要执行的云函数名
        url = 'https://api.weixin.qq.com/tcb/invokecloudfunction?access_token=' + ACCESS_TOKEN + '&env=' + ENV + '&name=' + FUNCTION_NAME
        data = {
        //所要传输的参数
        }
        response = requests.post(url=url, data=json.dumps(data))
        result = response.json()

其参数内容与云函数要相对应,在下面的代码中键值(key)有相对应的参数,在云函数中想要获取对应的参数,使用event.key即可。

data = {
        //所要传输的参数

   id:‘******’,
   date: '2020-4-23'
}

2.1 创建集合

调用createCollection方法,给定集合名字创建新集合

const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
  return await db.createCollection(event.id)
  //event.id是python传输的数据,为该集合的名字
}

2.2 查询文档

在记录和集合上都有提供 get 方法用于获取单个记录或集合中多个记录的数据。

const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
  try {
    return await db.collection(event.id).where({
      date: event.date
    }).get();
  } catch (e) {
    console.error(e)
  }
 //event.id是python传输的数据,为该集合的名字
 //.where用于定位对应键值的数据
 //.collection用于定位相应的集合
}

2.3 插入文档

可以通过在集合对象上调用 add 方法往集合中插入一条记录。

const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
  try {
    return await db.collection(event.id).add({
  // data 字段表示需新增的 JSON 数据
  data: {
    // _id: '43646fghdr', // 可选自定义 _id,一般使用自动分配就行

      date:event.date
  },
  success: function(res) {
    // res 是一个对象,其中有 _id 字段标记刚创建的记录的 id
    console.log(res)
  }
})
}catch (e) {
    console.error(e)
  }

2.4 更新文档

更新数据主要有两个方法:

API说明
update局部更新一个或多个记录
set替换更新一个记录

局部更新

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

const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {

    return await db.collection(event.id).doc(event._id).update({

   //.doc用于定位对应_id的文档
    // data 传入需要局部更新的数据
  data: {
    // 表示将 done 字段置为 true
    done: true
  },
  success: function(res) {
    console.log(res.data)
  }
})

除了用指定值更新字段外,数据库 API 还提供了一系列的更新指令用于执行更复杂的更新操作,更新指令可以通过 db.command取得:

更新指令说明
set设置字段为指定值
remove删除字段
inc原子自增字段值
mul原子自乘字段值

替换更新

如果需要替换更新一条记录,可以在记录上使用 set 方法,替换更新意味着用传入的对象替换指定的记录:

const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {

    return await db.collection(event.id).doc(event._id).set({
  data: {
    description: "set new doc",
    due: new Date("2018-09-01"),
    done: false
  },
  success: function(res) {
    console.log(res.data)
  }
})

如果指定 ID 的记录不存在,则会自动创建该记录,该记录将拥有指定的 ID。

2.5 删除文档

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

const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {

    return await db.collection(event.id).doc(event._id).remove({
  success: function(res) {
    console.log(res.data)
  }
})

如果需要更新多个数据,需在 Server 端进行操作(云函数)。可通过 where 语句选取多条记录执行删除,只有有权限删除的记录会被删除。

const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
exports.main = async (event, context) => {
  try {
    return await db.collection(event.id).where({
      date: event.date
    }).remove()
  } catch(e) {
    console.error(e)
  }
}

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇