一、概念
小程序云开发,让前端程序员拥有后端的能力
云函数 (nodejs)
云数据库 (mogodb)
云存储
前端写好云函数 ---> 上传到云服务器 --->实现自定云部署
前端去调用云函数==>间接通过云函数对数据库的操作
有助于前端程序员向全栈方向发展
二、云数据库的创建
1、创建集合,添加记录
2、
三、云函数
1、云函数的定义
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
//定义数据库
const db=cloud.database();
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext();
const data=await db.collection("feeback").get();
return {
data:data.data,
event,
sum:event.a+event.b,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}
2、在页面中调用云函数
wx.cloud.callFunction({name,data})
sendFeed(){
console.log("发表意见");
//执行云函数
wx.cloud.callFunction({
name:'addFeed',
data:{
msg:this.data.msg,//留言信息
userInfo:wx.getStorageSync('userInfo'),//用户信息
}
})
.then(res=>{
console.log(res)
//获取留言
this.getFeeback();
//更新msg
this.setData({msg:""})
})
.catch(err=>{
console.log(err,"err");
})
3、在云函数中操作云数据
1、 初始化
var db = cloud.database();
2、 获取
var data = await db.collection("feedback").get()
3、添加
var data = await db.collection("feedback").add(data:{添加数据})
四、发表留言
<!--pages/home/home.wxml-->
<!-- 添加 -->
<view>
<textarea value="{{msg}}" style="background-color: #f0f0f0;" bindinput="inputHd" />
<button type="primary" bindtap="addFeed">发表</button>
</view>
<view class="list">
<view class="item" wx:for="{{list}}" wx:key="_id">
<view>
<image src="{{item.userInfo.avatarUrl}}" style="width: 33px;height: 33px;" mode=""/>
<text>{{item.userInfo.nickName}}</text>
<text>{{item.datetime}}</text>
</view>
<view>{{item.msg}}</view>
</view>
</view>
1、获取头像及昵称
addFeed(){
//获取本地的用户信息
const userInfo=wx.getStorageSync('userInfo');
//如果有用户信息
if(userInfo&&userInfo.nickName){
//直接发表意见
this.sendFeed();
}else{
//先获取用户头像信息
wx.getUserProfile({
desc: '需要用户头像',
success:(res=>{
//存储用户头像信息
wx.setStorageSync('userInfo',res.userInfo);
//发表留言
this.sendFeed();
})
})
}
},
2、执行云函数
sendFeed(){
console.log("发表意见");
//执行云函数
wx.cloud.callFunction({
name:'addFeed',
data:{
msg:this.data.msg,//留言信息
userInfo:wx.getStorageSync('userInfo'),//用户信息
}
})
.then(res=>{
console.log(res)
//获取留言
this.getFeeback();
//更新msg
this.setData({msg:""})
})
.catch(err=>{
console.log(err,"err");
})
},
3、微信云执行云函数
getFeeback(){
//微信云执行云函数
wx.cloud.callFunction(
//函数名称feeback,传递数据data为a:3,b:2a:3,b:2
{name:"feeback",data:{a:3,b:2}}
)
.then(res=>{
//云函数返回的结果
console.log(res.result);
this.setData({list:res.result.data.map(item=>({
...item,datetime:formatDate(item.datetime,"-")
}))})
})
.catch(err=>{
console.log(err,"err");
})
},
4、获取时间
module.exports={
/**
* @description 格式化日期函数
* @param {String|Number} str 传入日期字符串 或者时间戳
* @param {string} d1 年月日的间隔符号 默认 /
* @param {String} d2 时分秒的间隔符号 默认 :
* @param {String} 返回格式好的日期
*/
formatDate(str,d1="/",d2=":"){
//创建时间
var d=new Date(str);
// 获取年月日,时分秒
var year=d.getFullYear();
var month=d.getMonth()+1;
var day=d.getDate();
var hours=d.getHours();
var minutes=d.getMinutes();
var seconds=d.getSeconds();
//给年月日不足补0
var arr1=[year,month,day].map(item=>String(item).padStart(2,"0"))
var arr2=[hours,minutes,seconds].map(item=>String(item).padStart(2,"0"))
return arr1.join(d1)+" "+arr2.join(d2)
}
}
五、微信开发文档
微信开放文档微信开发者平台文档https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html
1、查询
2、分页
3、排序