云开发提供了两类托管在云端的数据库:MongoDB和MySQL。
说明:为了保证私密且安全的操作数据库,所有数据库API只能在云函数内部进行调用,不支持在小程序端上进行调用。
MongoDB数据库是基于 MongoDB 托管在云端的数据库,数据以 JSON 格式存储。一个数据库可以有多个集合(相当于关系型数据中的表),集合可看做一个 JSON 数组,数组中的每个对象就是一条记录,记录的格式是 JSON 对象。
MySQL数据库基于阿里云PolarDB 托管在云端的数据库,可以在云函数中使用标准的SQL语句对数据进行操作。
MongoDB 和 JSON 格式的数据存储方式,跟关系型数据库(MySQL)不一样。
以下表格列举了 MongoDB 和关系型数据库 MySQL 的异同点。
MySQL |
MongoDB |
||
database |
数据库 |
database |
数据库 |
table |
表 |
collection |
集合 |
row |
记录、行 |
document |
文档、记录、行 |
column |
字段 |
field |
域 |
index |
索引 |
index |
索引 |
table joins |
表连接 |
MongoDB 不支持 |
|
primary key |
主键 |
MongoDB 自动将 _id 字段作为主键 |
要使用云函数SDK中提供的数据库API进行数据库操作,云函数SDK版本中必须有此API,否则调用可能会报错(Error: connect EHOSTUNREACH 124.238.245.213:80),建议始终把云函数SDK版本号改成最新版本。
以下是使用数据库API在数据库中新增记录的例子。
//MongoDB 向users集合中新增一条记录 exports.main = async function(context) { const cloud = context.cloud; const result = await cloud.db.collection('users').insertOne({ name: 'tom', age: 1 }); return result; } //MySQL 向users表中增加一条记录 exports.insert = async (context) => { try { let data = await context.cloud.dataspace.executeSql('insert into users(name,age) values(?,?)', ['cx',18]); return data; } catch (err) { console.log(err); return { success:false, msg: err, } } }
更多数据库API 的具体使用方法,参考 MongoDB数据库 API 和 MySQL数据库API。(数据库暂不支持DDL操作)