uniCloud 云函数操作云数据库-基础篇

uniCloud 云函数操作云数据库-基础篇

原文:uniCloud 云函数操作云数据库-基础篇

1. database()

获取数据库对象

const db = uniCloud.database();//代码块为cdb
1.1 database.collection(name)

获取集合(类比于数据库中的表)

// 获取数据库对象
const db = uniCloud.database();
// 获取名为 table1 的集合
const table = db.collection("table1");

collection对象的方法

提示

  1. collection对象的方法可以增和查数据,删和改不能直接操作,需要collection对象通过doc()get() 得到指定的记录后再调用 remove()update() 方法进行删改。
  2. count、where、skip、orderBy、limit、field 方法要 get() 结合使用,只有当调用 get() 时,才会真正的发送查询请求,其他方法则是为了查询更精准的数据而去设置查询条件
1.1.1 collection.add()

新增记录(触发请求),支持单条和批量两种方式

入参

参数类型必填
dataobject / array

响应参数

单条插入

参数类型说明
idString插入记录的id

批量插入

参数类型说明
insertedNumber插入成功条数
idsArray批量插入所有记录的id

创建一条新记录,每条记录都会自带一个_id字段用以作为该记录的唯一标志。_id字段是每个数据表默认自带且不可删除的字段。同时它也是数据表的索引。

// 云函数写法,后续写法省略 exports
'use strict';
// 获取数据库对象
const db = uniCloud.database();

// 运行 在云端(服务器端)的函数
exports.main = async (event, context) => {

    // 获取名为 user 的集合
    const user_table = db.collection("user");
    // 单条插入
    let res = await user_table.add({
      name: 'Ben',
      type: {
          className: '一年级'
      }
    })
    
    // 批量插入
    let res2 = await user_table.add([
    {
        name: 'Alex',
        type: {
            className: '一年级'
        }
    },{
        name: 'Ben',
        type: {
          className: '三年级'
        }
    },{
        name: 'John'
    }
    ])
    
    return {
        code: 200,
        msg: '添加成功',
        data: res2
    }
}
1.1.2 collection.doc()

首先记住引用≠获取到了数据。获取对该集合中指定 id 的记录的引用(引用的用途是为了实现对唯一数据的进行更新、删除操作,也可以通过该引用直接获取到该记录)

引用对象的方法

// 1. 将id为1的数据覆盖
let res = await collection.doc('1').set({
  name: "Ben",
  type: {
    className: '五年级'
  }
})

// 2. 将id为1的数据 name 字段更新为 Ben2
let res2 = await collection.doc('1').update({
  name: "Ben2"
});

// 3. 如果集合包含数组结构,可以通过下标进行更新,例如:
// {
//   "_id": "doc-id",
//  "arr": ["hello", "uniCloud"]
//}
// let res = await collection.doc('doc-id').update({
//   arr: {
//    1: "uniCloud"
//  }
//})

// 4. 删除全部数据
let res3 = await collection.get()
res.data.map(async(document) => {
  return await collection.doc(document.id).remove();
});

// 5. 获取记录
let res4 = await collection.doc('1').get();
1.1.2.1 doc.set()

更新文档,如果不存在则创建,此方法会覆写已有字段,需注意与update表现不同

1.1.2.2 doc.update()

未使用set、remove更新操作符的情况下,此方法不会删除字段,仅将更新数据和已有数据合并。

入参

参数类型必填
dataobject

响应参数

参数类型说明
updatedNumber更新成功条数,数据更新前后没变化时会返回0
1.1.2.3 doc.remove()

通过指定ID删除

响应参数

参数类型说明
deletedNumber删除的记录数量
const db = uniCloud.database();
db.collection("user").doc("1").remove()
    .then((res) => {
        console.log("删除成功,删除条数为: ",res.deleted);
    })
    .catch((err) => {
        console.log( err.message )
    })
    .finally(() => {

    })
1.1.3 collection.get()

获取集合中的记录,如果有使用 where 语句定义查询条件,则会返回匹配结果集 (触发请求)

1.1.4 collection.count()

获取符合条件的记录条数

响应参数

参数类型说明
totalNumber计数结果
// 获取数据库对象
const db = uniCloud.database();
// 获取名为 user 的集合
const user_table = db.collection("user");

let res = await user_table.where({
  name: 'Ben',
  type: {
    className: '三年级',
  }
}).count()

return {
    code: 200,
    msg: '查询成功',
    data: res2.total
}
1.1.5 collection.where()

设置过滤条件,where 可接收对象作为参数,表示筛选出拥有和传入对象相同的 key-value 的数据

// 获取数据库对象
const db = uniCloud.database();
// 获取名为 user 的集合
const user_table = db.collection("user");
// 获取name为 Ben 的数据
let res = await user_table.where({
  name: 'Ben'
}).get()

return {
    code: 200,
    msg: '查询成功',
    data: res.total
}

where 除了上面设置过滤条件外,还可以通过高级查询指令进行查询,下篇会进行讲解。

1.1.6 collection.skip()

设置起始位置

入参

参数类型说明
valueNumber跳过指定的位置,返回该位置之后的数据
let res = await collection.skip(4).get()

数据量很大的情况下,skip性能会很差,建议使用分页的形式处理

1.1.7 collection.orderBy()

结果排序

入参

参数类型说明
fieldstring排序的字段
orderTypestring排序的顺序,升序(asc) 或 降序(desc)
let res = await collection.orderBy("name", "asc").get()
1.1.8 collection.limit()

设置返回的数据数量,默认返回100条数据;设置limit有最大值,腾讯云限制为最大1000条,阿里云限制为最大500条。

入参

参数类型说明
valueNumber返回的数据条数
let res = await collection.limit(1).get() // 只返回第一条记录
1.1.9 collection.field()

指定返回字段

collection.field({ 'name': true }) //只返回name字段、_id字段,其他字段不返回
  • 8
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
你可以使用uni-app框架提供的uniCloud插件来连接unicloud数据库。下面是连接unicloud数据库的基本步骤: 1. 在uni-app项目中安装uniCloud插件。可以通过以下命令使用npm进行安装: ```bash npm install @dcloudio/uni-cli-plugin-unicloud --save-dev ``` 2. 在uni-app项目的`manifest.json`文件中添加插件配置。在`uni_modules`中添加`@dcloudio/uni-cli-plugin-unicloud`插件: ```json "uni_modules": [ { "name": "@dcloudio/uni-cli-plugin-unicloud", "path": "uni_modules/@dcloudio/uni-cli-plugin-unicloud" } ] ``` 3. 在uniCloud平台中创建数据库,并获取到数据库的环境ID和数据库名称。 4. 在uni-app项目中的`main.js`文件中引入`@dcloudio/uni-cli-plugin-unicloud`插件,并初始化云开发: ```javascript import uniCloud from '@dcloudio/uni-cli-plugin-unicloud' // 初始化uniCloud uniCloud.init({ env: 'your-env-id' // 替换成你的环境ID }) ``` 5. 在需要使用数据库的地方,可以通过`uniCloud.database()`获取到数据库对象,并进行操作。例如,查询集合中的数据: ```javascript const db = uniCloud.database() const collection = db.collection('your-collection-name') // 替换成你的集合名称 collection.get().then(res => { console.log('查询结果', res.data) }).catch(err => { console.error('查询失败', err) }) ``` 以上就是使用uniCloud插件连接unicloud数据库的基本步骤。你可以根据自己的实际需求进行操作和扩展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OurQueen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值