⼩程序云开发(云数据库篇)
⼩程序云开发[云数据库篇]
云数据库
云开发提供了⼀个 JSON 数据库,顾名思义,数据库中的每条记录都是⼀个 JSON 格式的对象。
⼀个数据库可以有多个集合(相当于关系型数据中的表),集合可看做⼀个 JSON 数组,数组中的每个对象就是⼀条记录,记录的格式是 JSON 对象。
关系型数据库和 JSON 数据库对⽐
数据类型
String:字符串
Number:数字
Object:对象
Array:数组
Bool:布尔值
Date:时间
Geo:多种地理位置类型
Point:点
LineString:线段
Polygon :多边形
MultiPoint:点集合
MultiLineString:线段集合
MultiPolygon:多边形集合
Null 相当于⼀个占位符,表⽰⼀个字段存在但是值为空
数据库操作
1. 初始化(调⽤获取默认环境的数据库的引⽤)
const db = wx.cloud.database()
2. 通过数据库引⽤上的 collection ⽅法获取⼀个集合的引⽤
const todos = db.collection('集合名')
3. 在集合对象上调⽤ add ⽅法往集合中插⼊⼀条记录
/
/ data 字段表⽰需新增的 JSON 数据
data:{
name:"alice",
age:18
}
})
.then(res =>{
//成功的处理
console.log(res)
}).cache(err =>{
//失败的处理
})
4. 记录和集合上都有提供 get ⽅法⽤于获取单个记录或集合中多个记录的数据
//获取单条数据
// res.data 包含该记录的数据
console.log(res.data)
})
//获取多条记录
name :'alice'
})
.
get({
success:function(res){
// res.data 是包含以上定义的两条记录的数组
console.log(res.data)
}
})
5. 使⽤ update ⽅法可以只更新指定的字段,其他字段不受影响。
// data 传⼊需要局部更新的数据
data:{
name :'alice'
},
success:function(res){
console.log(res.data)
}
})
//批量更新
//在云函数,可通过 where 语句选取多条记录执⾏删除
const cloud =require('wx-server-sdk')
const db = cloud.database()
const _ = dbmand
exports.main =async(event, context)=>{
try{
return llection('集合名').where({
name :'alice'
name :'alice'
}).update({
data:{
age:100
},
})
}catch(e){
<(e)
}
}
6. 对记录使⽤ remove ⽅法可以删除该条记录
//删除单条记录
success:function(res){
console.log(res.data)
}
})
//多条删除
//在云函数,可通过 where 语句选取多条记录执⾏删除
const cloud =require('wx-server-sdk')
const db = cloud.database()
const _ = dbmand
exports.main =async(event, context)=>{
try{
return llection('集合名').where({
name :'alice'
}).remove()
}catch(e){
<(e)
}
}
联表查询
与同个数据库下的⼀个指定的集合做 left outer join(左外连接)。对该阶段的每⼀个输⼊记录,lookup 会在该记录中增加⼀个数组字段,该数组是被联表中满⾜匹配条件的记录列表。
lookup({
from: <;要连接的集合名>,
localField: <;输⼊记录的要进⾏相等匹配的字段>,
foreignField: <;被连接集合的要进⾏相等匹配的字段>,
as: <;输出的数组字段名>
})
参数说明
具体操作
const db = cloud.database()
.lookup({
from:'关联的集合名',
localField:'关联字段',
foreignField:'关联的集合名关联字段',
as:'输出结果字段名',
}).end()
.then(res => console.log(res))
.catch(err => (err))
事务处理
采⽤的是快照隔离,不⽀持批量操作
云函数中, 流程⾃定义控制的 startTransaction 接⼝
try{
const transaction =await db.startTransaction()
/
云数据库服务/ ...
llection('集合名').doc('数据id').update({ data:{
name :'alice'
}
})
// 提交事务
await transactionmit()
}catch(e){
<(`transaction error`)
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论