当前位置:千优网络 > 新闻资讯 > 小程序常见问题 > 小程序·云开发提供了三个基础能力:数据库、存储和云函数

小程序·云开发提供了三个基础能力:数据库、存储和云函数

发表日期:2018-11-19 编辑:千优网络 来源:微信公众平台 标签:小程序·云开发 浏览次数:2253

小程序·云开发提供了三个基础能力:数据库、存储和云函数,这一章节我们介绍下这几个能力分别是什么,我们能用他来做什么。

数据库

云开发提供了一个 JSON 数据库,顾名思义,数据库中的每条记录都是一个 JSON 格式的对象。一个数据库可以有多个集合(相当于关系型数据中的表),集合可看做一个 JSON 数组,数组中的每个对象就是一条记录,记录的格式是 JSON 对象。

关系型数据库和 JSON 数据库的概念对应关系如下表:

关系型文档型
数据库 database数据库 database
表 table集合 collection
行 row记录 record / doc
列 column字段 field

以下是一个示例的集合数据,假设我们有一个 books 集合存放了图书记录,其中有两本书:

[
  {    "_id": "Wzh76lk5_O_dt0vO",    "title": "The Catcher in the Rye",    "author": "J. D. Salinger",    "characters": [      "Holden Caulfield", 
      "Stradlater", 
      "Mr. Antolini"
    ],    "publishInfo": {      "year": 1951,      "country": "United States"
    }
  },
  {    "_id": "Wzia0lk5_O_dt0vR",    "_openid": "ohl4L0Rnhq7vmmbT_DaNQa4ePaz0",    "title": "The Lady of the Camellias",    "author": "Alexandre Dumas fils",    "characters": [      "Marguerite Gautier",      "Armand Duval",      "Prudence",      "Count de Varville"
    ],    "publishInfo": {      "year": 1848,      "country": "France"
    }
  }
]

在图书信息中,我们用 titleauthor 来记录图书标题和作者,用 characters 数组来记录书中的主要人物,用 publishInfo 来记录图书的出版信息。在其中我们可以看到,字段既可以是字符串或数字,还可以是对象或数组,就是一个 JSON 对象。

每条记录都有一个 _id 字段用以唯一标志一条记录、一个 _openid 字段用以标志记录的创建者,即小程序的用户。需要特别注意的是,在管理端(控制台和云函数)中创建的不会有 _openid 字段,因为这是属于管理员创建的记录。开发者可以自定义 _id,但不可自定义和修改 _openid_openid 是在文档创建时由系统根据小程序用户默认创建的,开发者可使用其来标识和定位文档。

数据库 API 分为小程序端和服务端两部分,小程序端 API 拥有严格的调用权限控制,开发者可在小程序内直接调用 API 进行非敏感数据的操作。对于有更高安全要求的数据,可在云函数内通过服务端 API 进行操作。云函数的环境是与客户端完全隔离的,在云函数上可以私密且安全的操作数据库。

数据库 API 包含增删改查的能力,使用 API 操作数据库只需三步:获取数据库引用、构造查询/更新条件、发出请求。以下是一个在小程序中查询数据库的发表于美国的图书记录的例子:

// 1. 获取数据库引用const db = wx.cloud.database()// 2. 构造查询语句// collection 方法获取一个集合的引用// where 方法传入一个对象,数据库返回集合中字段等于指定值的 JSON 文档。API 也支持高级的查询条件(比如大于、小于、in 等),具体见文档查看支持列表// get 方法会触发网络请求,往数据库取数据db.collection('books').where({  publishInfo: {    country: 'United States'
  }
}).get({  
  success: function(res) {  // 输出 [{ "title": "The Catcher in the Rye", ... }]
  console.log(res)
 }
})

更多的数据库的 API 的使用和数据库管理,可以参考数据库指引章节。

存储

云开发提供了一块存储空间,提供了上传文件到云端、带权限管理的云端下载能力,开发者可以在小程序端和云函数端通过 API 使用云存储功能。

在小程序端可以分别调用 wx.cloud.uploadFile 和 wx.cloud.downloadFile 完成上传和下载云文件操作。下面简单的几行代码,即可实现在小程序内让用户选择一张图片,然后上传到云端管理的功能:

// 让用户选择一张图片wx.chooseImage({  success: chooseResult => {    // 将图片上传至云存储空间
    wx.cloud.uploadFile({      // 指定上传到的云路径
      cloudPath: 'my-photo.png',      // 指定要上传的文件的小程序临时文件路径
      filePath: chooseResult.tempFilePaths[0],      // 成功回调
      success: res => {        console.log('上传成功', res)
      },
    })
  },
})

上传完成后可在控制台中看到刚上传的图片。

更多的存储 API 和管理,可以参考存储指引章节。

云函数

云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。

小程序内提供了专门用于云函数调用的 API。开发者可以在云函数内使用 wx-server-sdk 提供的 getWXContext 方法获取到每次调用的上下文(appidopenid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid)。

比如我们如下定义一个云函数,命名为 add ,功能是将传入的两个参数 a 和 b 相加:

// index.js 是入口文件,云函数被调用时会执行该文件导出的 main 方法// event 包含了调用端(小程序端)调用该函数时传过来的参数,同时还包含了可以通过 getWXContext 方法获取的用户登录态 `openId` 和小程序 `appId` 信息const cloud = require('wx-server-sdk')
exports.main = (event, context) => {  let { userInfo, a, b} = event  let { OPENID, APPID } = cloud.getWXContext() // 这里获取到的 openId 和 appId 是可信的
  let sum = a + b  return {
    OPENID,
    APPID,
    sum
  }
}

在开发者工具中上传部署云函数后,我们在小程序中可以这么调用:

wx.cloud.callFunction({  // 需调用的云函数名
  name: 'add', 
  // 传给云函数的参数
  data: {       
    a: 12
    b: 19,
  },  // 成功回调
  complete: console.log
})// 当然 promise 方式也是支持的wx.cloud.callFunction({  name: 'add',  data: {    a: 12,    b: 19
  }
}).then(console.log)

如需在云函数中操作数据库、管理云文件、调用其他云函数等操作,可使用官方提供的 npm 包 wx-server-sdk 进行操作

本站关键词: 厦门小程序开发 | 厦门网站建设 | 厦门网站优化 | 微信小程序商店
本站文章,部分来源互联网,部分为原创,如有侵权请联系我们,如您转载请注明来自:https://www.e1000u.net/news/487.html
返回列表
热门文章

小程序·云开发提供了三个基础能力:数据库、存储和云函数

小程序·云开发提供了三个基础能力:数据库、存储和云函数,这一章节我们介绍...

日期:2018-11-19 浏览次数:2256

微信门店小程序上线方法及流程

在微信小程序上开店铺有很多便捷之处,对于商家的宣传也十分有利,因为小程序...

日期:2018-11-19 浏览次数:1803

厦门有哪些app开发、小程序开发、微信公众号开发的公司

厦门大多互联网公司都在厦门软件园,很多企业都需要拓展移动互联网业务,必不...

日期:2018-11-19 浏览次数:1676

小程序这么牛 但是到底要怎么引流?

小程序可以将公众号、朋友圈、社群无缝连接起来,方法就是使用小程序的卡片。...

日期:2018-11-19 浏览次数:1366

在厦门开发一个微信小程序需要多少钱,开发公司有哪些

2017年1月9号微信发布小程序​上线,今年是小程序的元年,很多公司想开...

日期:2018-11-19 浏览次数:1318

服务端使用云开发能力

如果你想在云函数中,操作文件、数据库和云函数资源,你可以使用我们提供的服...

日期:2018-11-19 浏览次数:1318

百度智能小程序接入新功能,识别发票、图像审核上线

高产的百度 AI 小程序“AI 体验中心”又接入了一批新的功能,今天就来...

日期:2018-11-19 浏览次数:1304

小程序•小故事(18)——微信3D小游戏下HUD绘制的经验分享

平视显示器(head up display)简称HUD。游戏经常在三维场...

日期:2018-11-19 浏览次数:1246