# 云开发

# 前期准备

示例代码

// app.json中添加如下配置
"plugins": {
  "cloud": {
    "version": "0.0.1",
    "provider": "641a62448a00310001441def"
  }
}
// app.js中添加如下内容
ft.loadExtApi({
  name: 'cloud',
  fun: requirePlugin('cloud')
})

# init

基础库3.0.35开始支持

init(Object object)

初始化。

参数

Object object

属性 类型 默认值 必填 说明
env string object

示例代码

fr.cloud.init({
  env: 'test-111',
  appid: 'xxx', //微信小程序id
  secret: 'xxx', //微信小程序appsecret
})

# database

基础库3.0.35开始支持

database(Object object)

数据库初始化。

参数

Object object

属性 类型 默认值 必填 说明
env string object

示例代码

const testDB = ft.cloud.database({
  env: 'test'
})

# 云函数

基础库3.0.35开始支持

callFunction(Object object)

云函数。

参数

Object object

属性 类型 默认值 必填 说明
name string 函数名
data object
config object

object.success 回调函数

参数

Object res

属性 类型 说明
errMsg string
result any 云函数返回的结果
requestID string 云函数执行 ID,可用于日志查询

示例代码

ft.cloud.callFunction({
  // 云函数名称
  name: 'add',
  // 传给云函数的参数
  data: {
    a: 1,
    b: 2,
  },
  success: function(res) {
  }
})

# add

基础库3.0.35开始支持

add(Object object)

插入数据(数据库)。

参数

Object object

属性 类型 默认值 必填 说明
data object 插入的数据

object.success 回调函数

参数

Object res

属性 类型 说明
errMsg string
_id string

示例代码

db.collection('xxx').add({
  data: {
    description: "learn cloud database",
  },
  success: function(res) {
    console.log(res)
  }
})

# get

基础库3.0.35开始支持

get(Object object)

查询数据(数据库)。

参数

Object object

属性 类型 默认值 必填 说明
data object 插入的数据

object.success 回调函数

参数

Object res

属性 类型 说明
errMsg string
data object 数据

示例代码

db.collection('xxx').doc('xxx').get({
  success: function(res) {
    console.log(res.data)
  }
})

# update

基础库3.0.35开始支持

update(Object object)

更新数据(数据库)。

参数

Object object

属性 类型 默认值 必填 说明
data object 需要更新的数据

object.success 回调函数

参数

Object res

属性 类型 说明
errMsg string
data object 数据

示例代码

db.collection('xxx').doc('xxx').update({
  data: {
    done: true
  },
  success: function(res) {
    console.log(res.data)
  }
})

# remove

基础库3.0.35开始支持

remove(Object object)

删除数据(数据库)。

参数

Object object

属性 类型 默认值 必填 说明
data object

object.success 回调函数

参数

Object res

属性 类型 说明
errMsg string
data object 数据

示例代码

db.collection('xxx').doc('xxx').remove({
  success: function(res) {
    console.log(res.data)
  }
})

# 查询、更新数组/嵌套对象

基础库3.0.35开始支持

示例代码

// 普通匹配
db.collection('xxx').where({
  progress: 50
}).get()

// 匹配记录中的嵌套字段

db.collection('xxx').where({
  style: {
    color: 'red'
  }
}).get()

// 方式二
db.collection('xxx').where({
  'style.color': 'red'
}).get()

// 匹配数组
db.collection('xxx').where({
  numbers: [10, 20, 30]
}).get()

// 匹配数组中的元素
db.collection('xxx').where({
  numbers: 20
}).get()

# 构建查询条件

基础库3.0.35开始支持

示例代码

// 指定查询结果集数量上限
db.collection('todos').limit(10)
  .get()
  .then(console.log)
  .catch(console.error)

// 指定查询返回结果时从指定序列后的结果开始返回,常用于分页
db.collection('todos').skip(10)
  .get()
  .then(console.log)
  .catch(console.error)

// 指定返回结果中记录需返回的字段
db.collection('todos').field({
  description: true,
  done: true,
  progress: true,
}).get()
  .then(console.log)
  .catch(console.error)

# uploadFile

基础库3.0.35开始支持

uploadFile(Object object)

上传文件(存储)。

参数

Object object

属性 类型 默认值 必填 说明
cloudPath string 云存储路径
filePath string 要上传文件资源的路径
config Object 配置
success string 成功回调
fail string 失败回调
complete string 结束回调

object.success 回调函数

参数

Object res

属性 类型 说明
errMsg string 文件 ID
fileID object 数据
statusCode number 服务器返回的 HTTP 状态码

示例代码

ft.cloud.uploadFile({
  cloudPath: 'xxx.png',
  filePath: '',
  success: res => {
    console.log(res.fileID)
  },
  fail: err => {
  }
})

# downloadFile

基础库3.0.35开始支持

downloadFile(Object object)

从云存储空间下载文件(存储)。

参数

Object object

属性 类型 默认值 必填 说明
fileID string
config Object 配置
success string 成功回调
fail string 失败回调
complete string 结束回调

object.success 回调函数

参数

Object res

属性 类型 说明
errMsg string 文件 ID
tempFilePath object 临时文件路径
statusCode number 服务器返回的 HTTP 状态码

示例代码

ft.cloud.downloadFile({
  fileID: 'xxx',
  success: res => {
    console.log(res.tempFilePath)
  },
  fail: err => {
  }
})

# deleteFile

基础库3.0.35开始支持

deleteFile(Object object)

从云存储空间删除文件,一次最多 50 个(存储)。

参数

Object object

属性 类型 默认值 必填 说明
fileList Object 文件列表
success string 成功回调
fail string 失败回调
complete string 结束回调

object.success 回调函数

参数

Object res

属性 类型 说明
errMsg string 文件 ID
fileList object 文件列表

示例代码

ft.cloud.deleteFile({
  fileList: ['xxx'],
  success: res => {
    console.log(res.fileList)
  },
  fail: err => {
  },
  complete: res => {
  }
})

# getTempFileURL

基础库3.0.35开始支持

getTempFileURL(Object object)

用云文件 ID 换取真实链接,公有读的文件获取的链接不会过期,私有的文件获取的链接十分钟有效期。一次最多取 50 个。(存储)。

参数

Object object

属性 类型 默认值 必填 说明
fileList Object 文件列表
success string 成功回调
fail string 失败回调
complete string 结束回调

object.success 回调函数

参数

Object res

属性 类型 说明
errMsg string 文件 ID
fileList object 文件列表

示例代码

ft.cloud.getTempFileURL({
  fileList: ['cloud://xxx', 'cloud://yyy'],
  success: res => {
    console.log(res.fileList)
  },
  fail: err => {
  }
})

# 未实现功能

  1. 查询指令
  2. 聚合查询
  3. 实时数据推送
  4. 地理位置
  5. traceUser
  6. serverDate
  7. 构造正则表达式
  8. 创建集合
  9. 支持在 image、audio 等组件中传入云文件 ID

::: tips 注意

未实现功能的替换方案:

可以通过云函数调用来实现, 如下:

云函数中引入wx-server-sdk库,比如:

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

exports.main = async (event) => {
  const { ENV, OPENID, APPID } = cloud.getWXContext()
  const db = cloud.database()
  cosnt _ = db.command
  const dbResult = await db.collection('test').where({ progress: _gt(10) }).get()
  return {
    dbResult,
    ENV,
    OPENID,
    APPID,
  }
}

:::