上次使用的是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的依赖
有话要说...