Я работаю с приложением чата на основе Angular-firebase,
- Я получаю сообщение об ошибке при отправке данных в мой файл службы Angular chat.service.ts
- Я помещаюошибка, которую я получаю ниже
ChatFormComponent.html: 5 ОШИБКА TypeError: queryFn не является функцией AngularFireDatabase.push ../ node_modules / angularfire2 / database / database.js.AngularFireDatabase.list (database.js: 18) на ChatService.push ../ src / app / services / chat.service.ts.ChatService.getMessages (chat.service.ts: 39) на ChatService.push ../ src / app /services / chat.service.ts.ChatService.sendMessage (chat.service.ts: 29)
- Я помещаю код компонента, который отправляет данные в файл сервиса ниже
.ts file
import { Component, OnInit } from '@angular/core';
import { ChatService } from '../services/chat.service';
@Component({
selector: 'app-chat-form',
templateUrl: './chat-form.component.html',
styleUrls: ['./chat-form.component.css']
})
export class ChatFormComponent implements OnInit {
message: string;
constructor( private _chat: ChatService) {}
send() {
console.log(this.message);
this._chat.sendMessage(this.message);
this.message = '';
}
}
.html file
<input class="chatInput" [(ngModel)]="message"/>
<button class="chatButton" (click)=send()>Send</button>
- вышеуказанный код компонента отправляет данные в службу, которые взаимодействуют с базой данных
сервисный код ->
import { Injectable } from '@angular/core';
import { AngularFireDatabase, FirebaseListObservable } 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()
export class ChatService {
user: firebase.User;
chatMessages: FirebaseListObservable<ChatMessage[]>;
chatMessage: ChatMessage;
userName: Observable<string>;
constructor( private db: AngularFireDatabase , private afAuth: AngularFireAuth ) { }
getUser() {}
sendMessage(msg: string) {
const timestamp = this.getTimeStamp();
const email = 'biky700@gmail.com';
this.chatMessages = this.getMessages();
this.chatMessages.push({
message: msg,
timeSent: timestamp,
userName: 'Anurag Ranjan',
email: email });
}
getMessages(): FirebaseListObservable<ChatMessage[]> {
// query to create our message feed binding
return this.db.list('messages', {
query: {
limitToLast: 25,
orderByKey: true
}
});
}
getTimeStamp(){}
}
}
Важно
- В приведенном выше коде службы вы можете увидеть некоторую часть кода, которая создает привязку к нашему каналу сообщений, код приведен ниже
getMessages(): FirebaseListObservable<ChatMessage[]> {
return this.db.list('messages', {
query: {
limitToLast: 25,
orderByKey: true
}
});
}
Когда я нахожу это, я получаю сообщение, приведенное ниже
**
[ts] Аргумент типа '{query: {limitToLast: number;orderByKey: логическое значение;};} 'нельзя назначить параметру типа' QueryFn '.
Литерал объекта может указывать только известные свойства, а запрос' не существует в типе 'QueryFn'.(собственность) orderByKey: логический
**