新建数据库feedback
在cloudfunctions文件夹下新建命为feedback的node.js的云函数
index.js中
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
}) // 使用当前云环境
//定义数据库
const db = cloud.database();
// 云函数入口函数
exports.main = async (event, context) => {
// wx的上下文信息
const wxContext = cloud.getWXContext()
// 获取集合feedback的数据(feedback是云数据库的集合名称)
//get获取数据 await等
const data = await db.collection("feedback").get();
// event就是调用时候传递的参数
return {
data: data.data,
event,
sum: event.a + event.b, //返回a+b的结果
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}
下一步鼠标右键feedback
每次修改index.js的数据以后,都需要
如果无法上传,检查是否选择环境
在page中新建名为home的page("pages/home/home")
home.wxml
{{item.name||item.userInfo.nickName}}
{{item.datetime}}
{{item.msg}}
home.js
// pages/home/home.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.getFeekback()
},
getFeekback() {
//微信云执行云函数
wx.cloud.callFunction({
//函数名称feeback,传递数据data为a: 3 b:2
name: "feedback",
data: {
a: 3,
b: 2
}
}).then(res => {
// 云函数返回结果
console.log(res.result);
this.setData({
list: res.result.data
})
}).catch(err => {
// 失败返回结果
console.error(err)
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})
在cloudfunctions文件夹下新建命为addFeed的node.js的云函数
index.js
// 云函数入口文件
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("feedback").add( {
data:{
msg:event.msg,//传入msg留言信息
datetime:new Date(),//当前时间
userInfo:event.userInfo,//用户信息
}
}
)
return {
event,
data:data.data,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}
在addFeed上方鼠标右键
每次修改index.js的数据以后,都需要
我们依然在
home.wxml
{{item.name||item.userInfo.nickName}}
{{item.datetime}}
{{item.msg}}
home.js
// pages/home/home.js
const {formatDate}=require("../../utils/index")
/*这里写了一个插件日期格式化,具体代码在下方*/
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.getFeekback()
},
inputHd(e) {
// textarea与msg数据实现双向绑定
this.setData({
msg: e.detail.value
})
},
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()
}
})
}
},
sendFeed() {
console.log("发表留言");
wx.cloud.callFunction({
name:"addFeed",
data:{
msg:this.data.msg,//留言信息
userInfo:wx.getStorageSync('userInfo')//用户信息
}
}).then(res=>{
console.log(res);
// 获取留言
this.getFeekback();
// 更新msg
this.setData({msg:""});
}).catch(err=>{
console.error(err);
})
},
getFeekback() {
//微信云执行云函数
wx.cloud.callFunction({
//函数名称feeback,传递数据data为a: 3 b:2
name: "feedback",
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.error(err)
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})
../../utils/index代码
module.exports = {
/*
@description格式化日期函数
@param {String| Number} str传入日期字符串或者时间戳@param {String} d1年月日的间隔符号默认/
@param {String} d2时分秒的间隔符号默认:
@returns {String}返回的格式好的日期
*/
formatDate(str, d1 = "/", d2 = ":") {
//创建时间
var d = new Date(str);
// 获取年月日, 时分秒
var yyyy = d.getFullYear();
var MM = d.getMonth() + 1;
var dd = d.getDate();
var HH = d.getHours();
var mm = d.getMinutes();
var ss = d.getSeconds();
//给年月日不足2位补0
var arr1 = [yyyy, MM, dd].map(item => String(item).padStart(2, "0"))
//给时分秒不足2位补0
var arr2 = [HH, mm, ss].map(item => String(item).padStart(2, "0"))
//用d1连接年月日,用d2连接时分秒
return arr1.join(d1)+" "+arr2.join(d2);
}
}