目前,我是Ionic的新手,并且正在尝试为我正在开发的应用实现聊天服务。我想尝试使用Firestore,这是我到目前为止所拥有的。
我已经设法从Firestore读取和接收消息,但是仅在发送消息之后。
换句话说,仅当我单击发送按钮后,用于检索消息的功能才激活。
我想知道是否有一种方法可以不断检查Firestore的更新,以便可以“实时”更新聊天。
这是我用于接收聊天消息的代码。我将它们放在ionviewwilload()中,以便在进入聊天室并单击“发送”时接收所有消息。
retrieveCollection() : void
{
this._DB.getChatMessages(this._COLL,this._COLL2)
.then((data) =>
{
console.log(data);
// IF we don't have any documents then the collection doesn't exist
// so we create it!
if(data.length === 0)
{
// this.generateCollectionAndDocument();
}
// Otherwise the collection does exist and we assign the returned
// documents to the public property of locations so this can be
// iterated through in the component template
else
{
this.chats = data;
}
})
.catch();
}
然后将getchatmessages函数链接到我的提供程序,以便从Firestore中检索我的消息,然后将其作为承诺返回。
getChatMessages(collectionObj: string, collectionObj2) : Promise<any>{
let user : string = firebase.auth().currentUser.uid;
return new Promise((resolve, reject) => {
this._DB.collection(collectionObj).doc(collectionObj2).collection("messages")
.orderBy("sendDate", "asc")
.onSnapshot
((querySnapshot) => {
let obj : any = [];
querySnapshot
.forEach(function(doc) {
console.log(typeof doc);
console.log(doc);
obj.push({
id : doc.id,
message : doc.data().message,
type : doc.data().type,
user :doc.data().user,
image: doc.data().image
});
});
resolve(obj);
})
});
}
所以我的问题是询问文档中是否缺少特殊的方法或功能,使我能够不断地检查聊天应用程序中的更新。
非常感谢那些答复。