上次使用的是dcloud自己的云开发功能,拿到微信开发者工具里跑,结果提示云函数未绑定,查了下文档和相关资料,了解到要用微信小程序的云开发的话需要增加一些配置。两者的云函数入口和数据库使用方式也有些不同,开始实战:
首先cd到项目根目录下安装两个module
npm install wx-server-sdk npm install copy-webpack-plugi
会发现在package.json中增加了这两个dependencies
2. App.vue 在onLaunch中增加初始化代码
onLaunch: function() {
console.log('App Launch')
if(!wx.cloud){
console.error("no support cloud")
}else{
wx.cloud.init({
tracerUser:true,
env:'myyu-e18641'
})
}
},3.根目录下新建文件vue.config.js ,内容如下目的是webpack打包时将云函数cloudfunctions目录打包进去
const path = require('path')
const CopyWebpackPlugin = require('copy-webpack-plugin')
module.exports = {
configureWebpack: {
plugins: [
new CopyWebpackPlugin([
{
from: path.join(__dirname, 'cloudfunctions'),
to: path.join(__dirname, 'unpackage/dist', process.env.NODE_ENV === 'production' ? 'build' : 'dev', process.env.UNI_PLATFORM, 'cloudfunctions')
}
])
]
}
}4.在根目录下建文件夹cloudfunctions,云函数全部放在这个文件夹下即可。
微信云开发的云函数index.js的入口文件与阿里云的不同,以插 入数据库一条数据为例:
阿里云代码:
'use strict';
const db=uniCloud.database()
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('event : ' + event)
//返回数据给客户端
const collection=db.collection('testcollection')
//插入数据库测试
const aa={title:'结婚纪念日',type:'2',remaindays:'31',theday:'2020.04.06'}
await collection.add(aa);
return {
status: 1
}
};云数据库插入数据只需为一个object即可。
腾讯云代码:
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db=cloud.database();
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('event : ' + event)
//返回数据给客户端
const collection=db.collection('testcollection')
//插入数据库测试
const aa={data:{title:'结婚纪念日',type:'2',remaindays:'31',theday:'2020.04.06'}}
await collection.add(aa);
return {
status: 1
}
};腾讯云数据库插入数据需要用data字段包裹起来。
这是个人的理解,具体区别还是需要今后使用中慢慢体会。
5.调用云函数报错:wx is not defined 及 wx-server-sdk 找不到

需要在云函数目录下加上package.json文件,里面加上wx-server-sdk的依赖

有话要说...