angular - [Angular]如何将 FirebaseListObservable 切换到 AngularFireList?
问题描述
所以,我正在研究如何构建一个聊天网络后端 Firebase。我拿起了一个我认为很好的 youtube 教程。
但是因为最新版本的 Angular 将模块 FirebaseListObservable 替换为新的模块 AngularFireList。
这是本教程的 git repo, https://github.com/wesdoyle/base-chat/blob/master/src/app/services/chat.service.ts
我将其切换如下,
import { Injectable } from '@angular/core';
import { AngularFireDatabase, AngularFireList } from 'angularfire2/database';
import { AngularFireAuth } from 'angularfire2/auth';
import { Observable } from 'rxjs/Observable';
import { AuthService } from '../services/auth.service';
import * as firebase from 'firebase/app';
import { ChatMessage } from '../models/chat-message.model';
@Injectable({
providedIn: 'root'
})
export class ChatService {
user: any;
chatMessages: AngularFireList < ChatMessage[] > ;
chatMessage: ChatMessage;
userName: Observable < string > ;
constructor(
private db: AngularFireDatabase,
private dfAuth: AngularFireAuth,
) {
//this.dfAuth.authState.subscribe(auth =>{
// if(auth !== undefined && auth !== null){
// this.user = auth;
// }
//});
}
getMessages(): AngularFireList < ChatMessage[] > {
// query to create our message feed binding
return this.db.list('/messages', ref => ref.orderByKey(25).limitToLast(true)).valueChanges();
}
sendMessage(msg: string) {
const timestamp = this.getTimeStamp();
// const email = this.user.email;
const email = 'test@example.com';
this.chatMessages = this.getMessages();
this.chatMessages.push({
message: '',
timeSent: timestamp,
// userName: this.userName,
userName: 'test-user',
email: ''
})
console.log('Called sendMessage()!!')
};
getTimeStamp() {
const now = new Date();
const date = now.getUTCFullYear() + '/' +
(now.getUTCMonth() + 1) + '/' +
now.getUTCDate();
const time = now.getUTCHours() + ':' +
now.getUTCMinutes() + ':' +
now.getUTCSeconds();
return (date + ' ' + time)
}
}
但它出现了这样的错误:
ERROR in src/app/services/chat.service.ts(31,46): error TS2304: Cannot find name 't'.
src/app/services/chat.service.ts(31,46): error TS2538: Type 'any' cannot be used as an index type.
src/app/services/chat.service.ts(33,5): error TS2322: Type 'Observable<{}[]>' is not assignable to type 'AngularFireList<any>'.
Property 'query' is missing in type 'Observable<{}[]>'.
src/app/services/chat.service.ts(33,45): error TS2554: Expected 0 arguments, but got 1.
src/app/services/chat.service.ts(44,7): error TS2345: Argument of type '{ message: string; timeSent: string; userName: string; email: string; }' is not assignable to parameter of type 'ChatMessage[]'.
Object literal may only specify known properties, and 'message' does not exist in type 'Message[]'.
任何人都可以帮忙吗?
解决方案
Tienes el error aqui
getMessages(): AngularFireList < ChatMessage[] > {
// query to create our message feed binding
return this.db.list('/messages', ref => ref.orderByKey().limitToLast(25)).valueChanges();
}
推荐阅读
- node.js - 在内连接Sequelize中选择Max
- python-3.x - Python3时间转换器(无效语法)
- c++ - 如何告诉编译器名称是模板类型名称?
- powerbi - 如何使用 DAX 在 Power BI 中计算最近的(按日期计算)和 MAX 的 prodcount
- python - python-pandas 合并单元格/数据框内容
- database - 使用相同格式的新集合更新现有集合
- c# - 如何从另一个类c#中获取异常
- button - 如何在颤动中创建没有标签的矩形图标按钮?
- python - Saving text from QPlainTextEdit by QFileDialog and creating .txt file
- android - RearView 无法使用 camera2 处理牛轧糖