如何从firebase查询返回任何类型的可观察对象
我在应用程序中使用firebase实时数据库进行聊天功能,我只需要从firebase query返回类型为any或类型为Message的Obserable, 这是我的密码:如何从firebase查询返回任何类型的可观察对象,firebase,firebase-realtime-database,observable,Firebase,Firebase Realtime Database,Observable,我在应用程序中使用firebase实时数据库进行聊天功能,我只需要从firebase query返回类型为any或类型为Message的Obserable, 这是我的密码: getMessageHistory(farmerId) { let chatMessages = []; var chats; firebase.database().ref('/' + this.chatUrl + '/' + farmerId + '/'
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 {
}
});
}`
getMessageHistory(farmerId){
让聊天信息=[];
var聊天;
firebase.database().ref('/'+this.chatUrl+'/'+farmerId+'/')。一次('value',函数(快照){
chats=snapshot.val();
如果(聊天!=null){
Object.keys(chats.forEach)(元素=>{
let chat=chats[element.toString()];
var消息={
fromId:chat.from,
toId:chat.to,
留言:chat.message
}
让mockedHistory:数组;
mockedHistory.push(消息)
});
}
否则{
}
});
}`
如何从上面的方法返回可观察的。我尝试过angularfire2,但在编译(AngularVersion 4)时抛出了一个错误。得到了解决方案,但我不知道是否推荐它
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;
}
)
让mockedHistory:Array=[];
让totalRecords=this.db.list('/'+this.chatUrl+'/'+userId+'/');
返回totalRecords.valueChanges().map((聊天)=>{
var newChat=chat.map((消息)=>{
让msg=新消息();
msg.fromId=message.from;
msg.toId=message.to,
msg.message=message.message
返回味精;
});
返回newChat;
}
)