代码之家  ›  专栏  ›  技术社区  ›  Prashant Pimpale Dila Gurung

如何从firebase查询返回任何类型的可观察对象

  •  0
  • Prashant Pimpale Dila Gurung  · 技术社区  · 8 年前

    我在应用程序中使用firebase实时数据库进行聊天功能,我只需要从firebase query返回任何类型的Obserable或类型的Message, 这是我的代码:

            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,但在编译时抛出了一个错误(AngularVersion4)

    1 回复  |  直到 8 年前
        1
  •  0
  •   Prashant Pimpale Dila Gurung    8 年前

    找到解决方案了,但我不知道是否推荐!

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