Ionic Firestore Chat-неспособен постоянно проверять обновления - PullRequest
0 голосов
/ 11 января 2019

В настоящее время я новичок в Ionic и пытаюсь внедрить службу чата для приложения, над которым я работаю. Я хотел попробовать использовать 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 затем связывается с моим провайдером, чтобы затем получать мои сообщения из хранилища, а затем возвращать их как обещание.

 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);
          })

        });
      }

Таким образом, мой вопрос заключается в том, чтобы спросить, существует ли какой-либо специальный метод или функция, которые я пропустил в документации, которая позволяет мне постоянно проверять наличие обновлений, подобных этому в приложении чата.

Большое спасибо тем, кто отвечает.

...