云开发(2)增删改查(SDK)

云开发的增删改查(SDK)

配置:注意事项

cloud.init({
  traceUser: true,//开启日志
  env: "wbw-9gpqknzwb95c2748"//环境ID
})

首先调用获取默认环境的数据库的引用

const db = cloud.database()
//get 插入一条
let res= await db.collection('text').add({
  data:{
    // _id: 'todo-identifiant-aleatoire', // 可选自定义 _id,在此处场景下用数据库自动分配的就可以了
  description: "learn cloud database",
  due: new Date("2018-09-01"),
  tags: [
    "cloud",
    "database"
  ],
  done: false
  }
})
return res
查询
//doc接收一个id参数查询一条
let res = await db.collection('text').doc('17453ede60865b920459efa57c8ff18f').get()
return res

//where查询条件
let res = await db.collection('text').where(
  {
    // where里面写查询条件
    // "_id":"b00064a760866074116972c87e7535c2",
    "description":"插入数据一"
  }
).get()
return res
查询所有的数据
//直接写get查询所有
let res = await db.collection('text').get()
return res
查询指令

使用数据库 API 提供的 where 方法我们可以构造复杂的查询条件完成复杂的查询任务。

查询指令

假设我们需要查询进度大于 30% 的待办事项,那么传入对象表示全等匹配的方式就无法满足了,这时就需要用到查询指令。数据库 API 提供了大于、小于等多种查询指令,这些指令都暴露在 db.command 对象上。比如查询进度大于 30% 的待办事项:


const _ = db.command
db.collection('todos').where({
  // gt 方法用于指定一个 "大于" 条件,此处 _.gt(30) 是一个 "大于 30" 的条件
  progress: _.gt(30)
})
.get({
  success: function(res) {
    console.log(res.data)
  }
})

API 提供了以下查询指令:

查询指令说明
eq等于
neq不等于
lt小于
lte小于或等于
gt大于
gte大于或等于
in字段值在给定数组中
nin字段值不在给定数组中
逻辑指令

除了指定一个字段满足一个条件之外,我们还可以通过指定一个字段需同时满足多个条件,比如用 and 逻辑指令查询进度在 30% 和 70% 之间的待办事项:

const _ = db.command
db.collection('todos').where({
  // and 方法用于指定一个 "与" 条件,此处表示需同时满足 _.gt(30) 和 _.lt(70) 两个条件
  progress: _.gt(30).and(_.lt(70))
})
.get({
  success: function(res) {
    console.log(res.data)
  }
})

既然有 and,当然也有 or 了,比如查询进度为 0 或 100 的待办事项:

const _ = db.command
db.collection('todos').where({
  // or 方法用于指定一个 "或" 条件,此处表示需满足 _.eq(0) 或 _.eq(100)
  progress: _.eq(0).or(_.eq(100))
})
.get({
  success: function(res) {
    console.log(res.data)
  }
})
更改数据
局部更新
//使用 update 方法可以局部更新一个记录或一个集合中的记录,局部更新意味着只有指定的字段会得到更新,其他字段不受影响。
let res= await db.collection('text').doc('17453ede60865b920459efa57c8ff18f').update({
  // data 传入需要局部更新的数据
  data: {
    // 表示将 done 字段置为 true
    done: true
  }
})
return res

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

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

例如向tags数组中后面增加一个mini-program,首先声明const _ = db.command

注意如果属性名不存在数据库会自动增加一个字段


const _ = db.command
return await db.collection('todos').doc('todo-identifiant-aleatoire').update({
  data: {
    // 表示指示数据库将字段自增 10
    progress: _.push('mini-program')
  }
})
替换更新

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

const _ = db.command
return await db.collection('todos').where({
  description:"插入数据一"
}).set({
  data: {
    description: "learn cloud database",
    due: new Date("2018-09-01"),
    tags: [
      "cloud",
      "database"
    ],
    style: {
      color: "skyblue"
    },
    done: false
  }
})
删除数据
删除单条数据
let res =await db.collection('text').doc('17453ede60865b920459efa57c8ff18f').remove()
return res
删除多条数据
return await db.collection('todos').where({
  条件
  done: true
}).remove()
可以使用云开发的能力来实现小程序中的弹窗输入,并调用云函数进行增删改查操作。以下是一个简单的示例代码: 1. 在小程序端,使用`wx.showModal`方法来实现弹窗输入: ```javascript wx.showModal({ title: '请输入内容', content: '请输入要操作的内容', success: function (res) { if (res.confirm) { // 用户点击确定按钮 wx.cloud.callFunction({ name: 'crud', // 云函数名称 data: { operation: 'add', // 操作类型,可以是add、delete、update、query等 content: res.content // 用户输入的内容 }, success: function (res) { console.log(res.result) // 处理成功返回的结果 }, fail: function (err) { console.error(err) // 处理调用云函数失败的情况 } }) } else if (res.cancel) { // 用户点击取消按钮 } } }) ``` 2. 在云函数中,根据传入的`operation`参数,进行增删改查操作: ```javascript // 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() // 云函数入口函数 exports.main = async (event, context) => { const db = cloud.database() const collection = db.collection('collectionName') // 替换为你自己的集合名称 switch (event.operation) { case 'add': try { const res = await collection.add({ data: { content: event.content } }) return res } catch (err) { console.error(err) return err } break case 'delete': // 删除操作的代码 break case 'update': // 更新操作的代码 break case 'query': // 查询操作的代码 break default: return 'Invalid operation' } } ``` 这是一个简单的示例代码,你可以根据自己的需求进行修改和扩展。同时,记得在小程序端和云函数中配置好云开发环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值