小程序·云开发是微信团队联合腾讯云推出的专业的小程序开发服务。
开发者可以使用云开发快速开发小程序、小游戏、公众号网页等,并且原生打通微信开放能力。
开发者无需搭建服务器,可免鉴权直接使用平台提供的 API 进行业务开发。
创建小程序时,勾选云开发选项即可
如果是已经创建好的测试项目,是没有云开发选项的,需要把测试id修改成开发者id,即可使用云开发
在云控制台操作云数据库,即创建数据库和插入数据等操作。
云开发数据库提供的数据类型:string、number、object、array、bool、GeoPoint(地理位置点)、Date(时间)、Null
其中的Date表示时间,精确到毫秒。
权限
在项目上线时,只是用本地存储或操作数据,有部分功能会无法实现,因为在开发时是以开发者的身份调试运行的,在用户端就无法操作,没有权限
只需改成云函数或修改权限即可,推荐使用云函数
在cloudfunctions下创建的Node.js云函数都会在这里显示
也可以进行本地调试、云端测试
云开发提供了云函数本地调试功能,在本地提供了一套与线上一致的 Node.js 云函数运行环境,让开发者可以在本地对云函数调试,使用本地调试可以提高开发、调试效率:
同时,本地调试还定制化提供了特殊的调试能力,包括 Network 面板支持展示 HTTP 请求和云开发请求、调用关系图展示、本地代码修改时热重载等等能力,帮助开发者更好的开发调试云函数。功能具体介绍见下方。
建议开发者在开发阶段和上传代码前先使用本地调试测试通过后再上线部署。
免费环境最多为2个,最多支持10个云函数
右键cloudfunctions目录,可更改当前环境、创建Node.js云函数等操作
创建Node.js云函数,文件名称即为云函数名称
添加
// 云函数入口函数 exports.main = async (event, context) => { let res=await db.collection('todos').add({ data:{ description: "云函数新标题", due: new Date(), tags: [ "cloud", "database" ], location: new db.Geo.Point(113, 23), done: false } }) return res }
add语句,值为对象,必须有data
查询
// 云函数入口函数 exports.main = async (event, context) => { let res=await db.collection('todos').doc('cbddf0af608669b903cb87b041d5d7d7').get() return res }
通过id查询单跳语句
// 云函数入口函数 exports.main = async (event, context) => { let res = await db.collection('todos').where({ "done": false }).get() return res }
通过where
查询多条语句
where
方法接收一个对象参数,该对象中每个字段和它的值构成一个需满足的匹配条件,各个字段间的关系是 “与” 的关系,即需同时满足这些匹配条件,在这个例子中,就是查询出 todos 集合中 done
等于 false
的记录。
删除
// 云函数入口函数 exports.main = async (event, context) => { let res=await db.collection('todos').doc('79550af260866893113571e0617083cf').remove() return res }
删除单条语句,可通过where
删除多条语句
更新
// 云函数入口函数 exports.main = async (event, context) => { let res = await db.collection('todos').doc('cbddf0af608669b903cb87b041d5d7d7').update({ data: { done: true } }) return res }
使用 update
方法可以局部更新一个记录或一个集合中的记录,局部更新意味着只有指定的字段会得到更新,其他字段不受影响。
const _ = db.command db.collection('todos').doc('todo-identifiant-aleatoire').update({ data: { style: _.set({ color: 'blue' }) }, success: function(res) { console.log(res.data) } })
使用set可以只更新 style.color
字段为 ‘blue’ 而不是把 style
字段更新为 { color: 'blue' }
对象