我正在设计一个聊天应用程序,因此当他的通讯员告诉他他的通讯员已阅读该消息时会收到通知;为此,我的消息包含三个属性:消息,状态(假或真),发送者,时间戳。 默认情况下,发送消息时,状态为false。当其匹配将焦点放在消息编写区域时,状态将更改为true。 问题在于,此后状态不会恢复为false,而是保持不变。 需要帮助
这是我在服务上的代码
enter code here
if (firebase.auth().currentUser) {
var promise = new Promise((resolve, reject) => {
let temp;
this.firebuddychats.child(firebase.auth().currentUser.uid)
.child(this.buddy.uid).orderByChild("status")
.equalTo(false).on('value', (snapshot) => {
temp = snapshot.val()
console.log(temp)
for (var tempkey in temp) {
let t= JSON.parse(JSON.stringify(temp[tempkey]))
if(t!=null){
this.firebuddychats
.child(firebase.auth().currentUser.uid)
.child(this.buddy.uid)
.child(tempkey).update({
status: true
}).then((d) => {
this.countnotreadmessages(this.buddy.uid)
console.log("test 1", t)
resolve({ success: true })
})
.catch((err) => {
reject(err)
})
}
}
})
})
return promise;
}
}
这是我在控制器中的代码
hasread(){
this.chatService.updateStatusMessage().then((data)=>{
console.log("data :",data)
})
}
这是我的html页面
<ion-toolbar class="no-border" color="white">
<ion-input [(ngModel)]="newmessage" placeholder="Saisir votre message ..." (ionFocus)="hasread()"></ion-input>
<ion-buttons end>
<button ion-button (click)="addmessage()">
<ion-icon name="send" color="primary"></ion-icon>
</button>
</ion-buttons>
</ion-toolbar>
这是我要添加消息的代码
addnewmessage(msg){
if(this.buddy){
var promise = new Promise((resolve, reject)=>{
this.firebuddychats.child(firebase.auth().currentUser.uid)
.child(this.buddy.uid)
.push()
.set({
sentby:firebase.auth().currentUser.uid,
message:msg,
status: true,
timestamp:firebase.database.ServerValue.TIMESTAMP
}).then(()=>{
this.firebuddychats.child(this.buddy.uid).child(firebase.auth().currentUser.uid)
.push()
.set({
sentby: firebase.auth().currentUser.uid,
message: msg,
status:false,
timestamp: firebase.database.ServerValue.TIMESTAMP
}).then((data)=>{
console.log(data)
this.countnotreadmessages(this.buddy.uid)
resolve(true)
}).catch((err)=>{
reject(err)
})
})
})
}
return promise;
}
它将所有状态更改为true,并发送状态保持为true的每条消息