脚本宝典收集整理的这篇文章主要介绍了微信小程序云开发指南,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
官方文档
储存数据与文件
运行后端代码
扩展能力
打通微信生态
云调用: 云函数内免鉴权调用小程序开放接口,包括服务端调用、获取开放数据等能力。
微信支付: 免鉴权、免签名计算、免 access_token,在云函数内原生调用微信支付接口。
环境共享: 跨账号资源和能力复用,可授权云开发资源给其他小程序/公众号使用。
内容 | 云开发 | 传统开发 |
---|---|---|
开发语言 | node.js | java,php.... |
难易程度 | 简单 | 复杂 |
开发周期 | 1-5周 | 1-5月 |
部署难度 | 基本不用部署(不需要:域名,备案,https) | 部署费时费力(需要:域名,备案,https) |
适合项目 | 中小型项目 | 大型项目 |
费用 | 免费版基本够用 | 收费很高 |
下载稳定版本微信开发工具:具体操作可以看之前写的文章 微信开发基础 注意:这里我们建项目不使用云开发
点击下图箭头所示,如果你第一步创建项目时,没有使用自己的appid,这里不会有下图箭头所示的云朵.
如果是第一次创建需要给云开发环境取名
获取云开发环境id
在app.js里写入环境id,注意这里要用你自己的云开发环境id
初始化云开发环境前,先去云开发控制台,拿到云开发环境id,如下图
拿到环境id以后,就去app.js里做云开发环境初始化,如下
```
// 小程序启动就会执行
onLaunch() {
// 连接云开发
wx.cloud.init({
env:'云开发环境id',//云开发环境id
})
},
```
注意:用时候云开发创建好以后,初始化可能需要一点时间,所以如果这里初始化有报错,记得关闭开发者工具,等几分钟再重新打开即可.
新建一个goods表 点击 云开发=》数据库=》添加====》添写集合名称
让用户查询到我们创建的goods数据,需要把权限改为所有用户可读
传统写法
wx.cloud.database().collection('goods')
.get({
// 请求成功
success(res){
console.log('请求成功',res)
},
// 请求失败
fail(err){
console.log('请求失败',err)
}
}) //查询
ES6简写
wx.cloud.database().collection('goods')
.get()
.then(res=>{
this.setData({
list:res.data
})
})
.catch(err=>{})
传统写法需要在外部定义一个参数存放this
然后才能在回调函数里setData,而es6直接可以在查询结果里设置数据this.setData
推荐使用ES6写法
在where里面包裹需要查询的条件对象,如:where({name:'苹果'})
wx.cloud.database().collection('goods')
.where({name:'苹果'})//条件查询
.get()
.then(res=>{
// 请求成功
console.log('请求成功',res)
})
主要用于根据id查询相关数据
wx.cloud.database().collection('goods')
.doc(54ad1eea61dd21cd0555df6772d2091c)//条件查询
.get()
.then(res=>{
// 请求成功
console.log('请求成功',res)
})
orderBy方法在做排序的时候,接受两个参数
wx.cloud.database().collection('goods')
.orderBy('price',asc)
.get()
.then(res=>{
// 请求成功
console.log('请求成功',res)
})
limit用来指定查询结果集数量上限。
wx.cloud.database().collection('goods')
.limit(3)
.get()
.then(res=>{
// 请求成功
console.log('请求成功',res)
})
skip指定查询返回结果时从指定序列后的结果开始返回,常用于分页。 比如我们有100条数据,想从第10条开始返回数据,可以通过skip(10)来实现。 查询第三页诶也四条
wx.cloud.database().collection('goods')
.limit(4)
.skip(12)
.get()
.then(res=>{
// 请求成功
console.log('请求成功',res)
})
比如我们有100条数据,每次返回20条数据。那么就可以分5页返回。
查询指令 | 说明 |
---|---|
eq | 等于 |
neq | 不等于 |
lt | 小于 |
lte | 小于或等于 |
gt | 大于 |
gte | 大于或等于 |
in | 字段值在给定数组中 |
nin | 字段值不在给定数组中 |
举例:查询大于30的数
const db = wx.cloud.database().collection('goods')
const _ = db.command
db.collection('todos')
.where({
price: _.gt(30)
})
.get({
success: function(res) {
console.log(res.data)
}
})
逻辑指令 | 说明 |
---|---|
and | 且 |
or | 或 |
price: _.eq(0).or(_.eq(100)) |
通过add可以实现数据的添加 添加是一个对象,对象里包含需要添加的data数据
wx.cloud.database().collection('goods')
.add({
data:{
name:'名称',
price:'价格'
}
})
.then(res=>{
// 请求成功
console.log('请求成功',res)
})
})
修改数据库里已存在的数据,根据查询结果修改相关数据 例如:结合doc进行修改单条数据
wx.cloud.database().collection('goods')
.doc(54ad1eea61dd21cd0555df6772d2091c)//条件查询
.update({
data:{
price:10
}
})
.then(res=>{
// 请求成功
console.log('请求成功',res)
})
})
删除数据,结合doc删除单条数据
wx.cloud.database().collection('goods')
.doc(54ad1eea61dd21cd0555df6772d2091c)//条件查询
.remove()
.then(res=>{
// 请求成功
console.log('请求成功',res)
})
})
. 数据导出,做数据备份 . 数据导入,为了快速的大量的创建一些数据。
云函数属于管理端,在云函数中运行的代码拥有不受限的数据库读写权限和云文件读写权限。 需特别注意,云函数运行环境即是管理端,与云函数中的传入的 openId 对应的微信用户是否是小程序的管理员 / 开发者无关。
操作 | 云函数 | 云数据库 |
---|---|---|
返回数据上限 | 100条 | 20条 |
更新数据 | 都可以更新 | 只有自己创建的才可以更新 |
删除数据 | 都可以删除 | 只有自己创建的才可以删除 |
运行环境 | 运行在云端Node.js环境 | 运行在小程序本地 |
实现功能丰富度 | 非常丰富 | 只能实现数据库增删改查 |
创建一个文件夹cloud和pages平行
在project.config.json里面配置云函数所在目录为cloud
"cloudfunctionRoot":"/cloud"
然后点击保存,我们的cloud文件夹前面就有一个云朵表示配置云函数文件成功
选中cloud文件===》新建Node.js云函数(右键)
创建成功后,工具会提示是否立即本地安装依赖,确定后工具会自动安装 wx-server-sdk。
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
return {}
}
注意:可能存在问题
报错1:Error: errCode: -404011 cloud function execution error Cannot find module 'wx-server-sdk'
npm install --save wx-server-sdk@latest
报错2:errMsg:Evenironment not fount 出现原因:如果你有两个云开发环境,偶尔会出现上所示的问题。 解决问题:有两种
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env:'云开发环境id'
})
// 云函数入口函数
exports.main = async (event, context) => {
return cloud.database().collection('goods').get()
}
cloud.init({
env:cloud.DYNAMIC_CURRENT_ENV
})
小程序调用数据库只能返回20条数据 云函数可以返回100条数据
// 云函数入口函数
exports.main = async (event, context) => {
return cloud.database().collection('goods').get()
}
. 小程序直接调用数据库修改会有问题 只能修改自己创建的数据,别人创建的数据,就没有办法修改了。
如何解决呢? 用云函数来修改就可以解决这个问题啦。
先创建云函数updateGoods
exports.main = async (event, context) => {
return cloud.database().collection('goods')
.doc(event.id)
.update({
data:{
price:event.price
}
})
}
调用云函数就行修改
wx.cloud.callFunction({
name:'updateGoods ',
data:{
id:id,
price:1
}
}).then(res=>{})
创建一个删除商品的云函数
exports.main = async (event, context) => {
return cloud.database().collection('goods')
.doc(event.id)
.remove()
}
Cloud.callFunction(object: Object): Promise<Object>
调用云函数参数
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
name | string | 是 | 云函数名 |
data | Object | 否 | 传递给云函数的参数,在云函数中可通过 event 参数获取 |
config | Object | 否 | 配置 |
控制台也可以很方便的管理文件
wx.chooseImage(Object object)
对应的官方文档:
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success (res) {
// tempFilePath可以作为img标签的src属性显示图片
const tempFilePaths = res.tempFilePaths
}
})
wx.cloud.uploadFile
将本地资源上传至云存储空间,如果上传至同一路径则是覆盖写
wx.cloud.uploadFile({
cloudPath: 'example.png',
filePath: '', // 文件路径
}).then(res => {
// get resource ID
console.log(res.fileID)
})
下载 使用wx.cloud.downloadFile下载文件 下载并打开word,excel,pdf 使用wx.openDocument打开文件
以上是脚本宝典为你收集整理的微信小程序云开发指南全部内容,希望文章能够帮你解决微信小程序云开发指南所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。