Ionic Firestore聊天-无法持续检查更新

时间:2019-01-11 15:08:57

标签: firebase ionic-framework ionic3 google-cloud-firestore

目前,我是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);
          })

        });
      }

所以我的问题是询问文档中是否缺少特殊的方法或功能,使我能够不断地检查聊天应用程序中的更新。

非常感谢那些答复。

0 个答案:

没有答案