操作数据库可以从小程序端和云函数端
云函数端操作数据库时存在未知bug,先熟悉小程序端操作数据库
云数据库的语法顺序:
`database.集合名.记录id`
`database->集合名->记录id`
第一步,获取数据库实例:
const db = wx.cloud.database()
第二步,获取集合的引用。方法接受一个 name 参数,指定需引用的集合名称。Database.collection(name: string): Collection
const todosCollection = db.collection('todos')
第三步,获取记录 Document
Collection.doc(id: string): Document
获取集合中指定记录的引用。方法接受一个 id 参数,指定需引用的记录的 _id。
const myTodo = db.collection('todos').doc('my-todo-id')
下面具体分析Database,Collection和Document三个对象经常使用的方法
(1)Database
属性1:
Command 数据库操作符,通过 db.command
获取,Command有一个聚合操作符属性,先不展开。
const _ = db.command
属性2: Geo 数据库地理位置结构,先不展开学习。
常用方法:
Database.collection(name: string): Collection
获取集合的引用。方法接受一个 name 参数,指定需引用的集合名称。
Database.createCollection(collectionName:string):Promise<Object>
(仅云函数端)创建集合,如果集合已经存在会创建失败
(2)Collection 数据库集合引用
常用方法
1,获取集合中指定记录的引用
Collection.doc(id: string): Document 返回记录的对象
2,请求操作,返回的都是Promise对象
get,update,remove,count,add,watch
增、删、改、查、计数和监听
-
增加记录
Collection.add(options: Object): Promise<Object>
如果传入的记录对象没有 _id 字段,则由后台自动生成 _id;若指定了 _id,则不能与已有记录冲突。add里面传入的是新增记录的对象,返回的是一个Promise对象,里面有新增记录的_id值。
-
查询记录
Collection.get(): Promise<Object>
获取集合数据,或获取根据查询条件筛选后的集合数据
示例代码:
db.collection('test').get().then(res => {
console.log(res.data)
})
.catch(console.error)
数据存储在res.data中,查询的结果数组,数据的每个元素是一个 Object,代表一条记录。小程序端与云函数端的表现会有如下差异:
-
小程序端:如果没有指定 limit,则默认且最多取 20 条记录。
-
云函数端:如果没有指定 limit,则默认且最多取 100 条记录。