使用云函数的目的?
# 弱化后端和运维概念,无需搭建服务器
# 脱离服务器来实现小程序的功能
注意:
1、使用云开发能力必须填写 AppID (无游客模式、也不可以使用 测试号)
2、云开发能力从基础库 2.2.3 开始支持(覆盖率 97.3%)
3、project.config.json 中增加了字段 cloudfunctionRoot 用于指定存放云函数的目录
4、cloudfunctionRoot 指定的目录有特殊的图标
配置准备
(
1
)配置project-config.json:
"cloudfunctionRoot"
:
"cloudfunctionRoot/"
,
#指定云函数的本地根目录
"miniprogramRoot"
:
"miniprogramRoot/"
,
# 指定小程序源码的目录(需为相对路径)
不设置会报异常,目的就是分开云函数和小程序
(
2
)初始化环境app.js:
wx.cloud.init({
env:
"dev-moce"
,
//环境id
traceUser:
true
,
//是否在将用户访问记录到用户管理中,在控制台中可见
})
(
3
)安装wx-server-sdk(node+npm)
npm install --save wx-server-sdk
@latest
使用云函数
#云函数编写
// 云函数入口文件
const
cloud = require(
'wx-server-sdk'
)
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
return
{
sum: event.a + event.b
}
}
#云函数调用
wx.cloud.callFunction({
name:
'add'
,
data: {},
success: res => {},
fail: err => {}
})
注意:
1、调用之前要在云函数文件右击 上传部署(“ 上传并部署:云端安装依赖(不上传 node_modules) ”)
2、云函数的代码不能在小程序js文件里写
数据库
#操作数据库
//创建集合
~ 通过云开发控制台创建
~ 通过云函数代码创建
let db = cloud.database();
return
await db.createCollection(
'file_infos'
)
//获取数据库
const
database = wx.cloud.database( { env:
'dev-moce'
} );
//获取数据库的数据集
const
moceCollection = database.collection(
'music_list'
);
//添加记录
moceCollection.add({data: {})
//删除记录
moceCollection.doc(item._id).remove()
//更新记录
moceCollection.doc(item._id).update({data: {})
//获取记录
moceCollection.where({_openid: OpenId}).get({})
//获取openId
exports.main = async (event, context) => {
const
openId = event.userInfo.openId
}
文件存储
#选择文件或图片
wx.chooseMessageFile({})
wx.chooseImage({})
#上传文件
wx.cloud.uploadFile({cloudPath:
'logo.png'
})
#获取文件的http地址
wx.cloud.getTempFileURL({})
#下载文件
wx.cloud.downloadFile({})
#删除文件
wx.cloud.deleteFile({})
#注意:
1
、文件的存储位置,就是云存储的根目录,上传文件可以自己指定
2
、播放MP3 ,ios不能播放带有中文的MP3链接
问题收集
# 开发内存限额 5G
# 云函数环境配置目前没有比较优雅的统一管理方式
云函数太多会很慢
# 只能实现简单的数据库和文件的增删改查,数据库的连表查询支持不好
# 不要去项目里实用,还是用专门的后台来支持,毕竟还不太完善
~ 微信小程序工具类集合(云函数调用、云数据库调用、时间格式化工具等等):
参考:https://developers.weixin.qq.com/community/develop/article/doc/0008c6695284f8bc32688b8c851013
$ npm i wx-tool --save
使用MySQL的作用是啥,没看出来啊,就是是初始化了一个MySQL然后没了。引入MySQL是为了小程序直接访问自己服务器的MySQL吗?
感觉既然现在转化为自己的知识自己的文章还是应该搞清楚,即是对自己负责也是对读者负责啊。
云函数外网流量这个一定会产生吗 有没有内网的方式?