Как вернуть Observable типа any из запроса firebase - PullRequest
0 голосов
/ 04 июня 2018

Я использую базу данных Firebase в реальном времени для функции чата в моем приложении, мне просто нужно вернуть Obserable типа any или type Message из запроса firebase. Вот мой код:

        getMessageHistory(farmerId) {

        let chatMessages = [];
        var chats;

        firebase.database().ref('/' + this.chatUrl + '/' + farmerId + '/').once('value', function (snapshot) {
            chats = snapshot.val();
            if (chats != null) {
                Object.keys(chats).forEach(element => {
                    let chat = chats[element.toString()];


                    var Message = {
                        fromId: chat.from,
                        toId: chat.to,
                        message: chat.message
                    }


                    let mockedHistory: Array<Message>;
                    mockedHistory.push(Message)
                });

            }
            else {
            }

        });
    }`

Как мнеВозврат Наблюдаемый сверху метод.Я пробовал angularfire2, но выдает ошибку при компиляции (Angular Version 4)

1 Ответ

0 голосов
/ 05 июня 2018

Есть решение, но я не знаю, рекомендуется это или нет!

 let mockedHistory: Array<Message> = [];
    let totalRecords = this.db.list('/' + this.chatUrl + '/' + userId + '/');

    return totalRecords.valueChanges<any>().map((chat)=>{
        var newChat = chat.map((message) => {
            let msg = new Message();
            msg.fromId = message.from;
            msg.toId= message.to,
            msg.message= message.message
            return msg;
        });
        return newChat;
      }
    )
...