You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gitProject1/src/miniprogram/pages/msg 2/msg 2.js

212 lines
4.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

const app = getApp()
const db = wx.cloud.database()
Page({
/**
* 页面的初始数据
*/
data: {
mess : '',
content : [],//聊天信息
mineAvatorSrc : '/images/user_male.jpg',
himAvatorSrc : '/images/user_female.jpg',
},
//获取格式化的时间 yyyy-mm-dd-hh:mm-ss
getFormatTime(){
let date = new Date();
let ymd = date.toISOString().substring(0,10);//年-月-日
let hms = date.toTimeString().substring(0,8);//小时-分钟-秒钟
console.log(ymd + "-" + hms);
return ymd + "-" + hms;//拼接
},
//“发送”
sendMess(){
let that = this;
let mess = that.data.mess;
let content = that.data.content;
let date = that.getFormatTime();
let id = that.data.currentId;
wx.showLoading({
title: '发送ing...',
mask: true,
success: (res) => {},
fail: (res) => {},
complete: (res) => {
db.collection('chatTest')
.doc(id)
.update({
data : {
chatContent : content.concat({
id : 0,//用户自己发送为0
text : mess,
date : date
})
},
success:function(res){
console.log("添加成功!",res);
},
fail:function(err){
console.log("添加失败!",err);
},
complete:function(){
that.setData({
mess : '',
})
wx.hideLoading({
noConflict: true,
success: (res) => {},
fail: (res) => {},
complete: (res) => {},
})
}
})
},
})
},
//初始化数据库的字段
initChatContent(){
let that = this;
wx.showLoading({
title: '初始化数据库的字段中...',
mask: true,
success: (res) => {},
fail: (res) => {},
complete: (res) => {
db.collection('chatTest')
.add({
data : {
chatContent : [],//设置一个空的聊天循环体
},
success(res){
console.log("初始化成功!",res);
that.setData({
currentId : res._id//设置当前的id
})
},
fail(err){
console.log("初始化失败!",err);
},
complete(){
wx.hideLoading({
noConflict: true,
success: (res) => {},
fail: (res) => {},
complete: (res) => {},
})
}
})
},
})
},
//查询聊天
queryChat(){
let that = this;
wx.showLoading({
title: '查询...',
mask: true,
success: (res) => {},
fail: (res) => {},
complete: (res) => {
db.collection('chatTest')
//.doc('4efa204964219ab20003873513331ef9')
.get({
success:function(res){
console.log("查询成功!",res);
if(res.data.length == 0){
that.initChatContent();//初始化数据库字段
}
else{
that.setData({
currentId : res.data[0]._id,//设置当前的id
content : res.data[0].chatContent//赋值给当前的聊天循环体
})
//定位到最后一行
that.setData({
toBottom : `item${that.data.content.length - 1}`,
})
}
},
fail:function(err){
console.log("查询失败!",err);
},
complete:function(){
wx.hideLoading({
noConflict: true,
success: (res) => {},
fail: (res) => {},
complete: (res) => {},
})
}
})
},
})
},
//数据库的监听器
dbWatcher(){
let that = this;
db.collection('chatTest').where({
})
.watch({
onChange: function (res) {
//监控数据发生变化时触发
console.log("res:",res);
if(res.docChanges != null){
if(res.docChanges[0].dataType == "update"){//数据库监听到的内容
let length = res.docChanges[0].doc.chatContent.length;
console.log("length : ",length);
let value = res.docChanges[0].doc.chatContent[length - 1];//要增添的内容
console.log("value : ",value);
that.setData({
content : that.data.content.concat(value)
})
//定位到最后一行
that.setData({
toBottom : `item${that.data.content.length - 1}`,
})
}
}
},
onError:(err) => {
console.error(err)
}
})
},
//获取时间并格式化时间
checkDateAndTime(){
let date = new Date();
let ymd = date.toISOString().substring(0,10);//年-月-日
let time = date.toTimeString().substring(0,8);//时:分:秒
console.log("年-月-日 : ",ymd);
console.log("时:分:秒 : ",time);
let resDate = ymd + '-' + time;
console.log("resDate : ",resDate);
},
/**
* 生命周期函数--监听页面加载
*/
// 生命周期函数--监听页面加载
onLoad: function (options) {
this.dbWatcher();
this.queryChat();
},
onReady(){
},
})