首页 文章

我在向Angular中的firebase数据库发送数据时收到错误

提问于
浏览
0

我正在开发基于Angular-firebase的聊天应用程序,

  • 我将数据发送到我的Angular服务文件chat.service.ts时收到错误

  • 我正在把错误提到下面

ChatFormComponent.html:5 ERROR TypeError:queryFn不是ChatService.push ../ src /中的AngularFireDatabase.push ../ node_modules / angularfire2 / database / database.js.AngularFireDatabase.list(database.js:18)中的函数ChatService.push上的app / services / chat.service.ts.ChatService.getMessages(chat.service.ts:39)../ src / app / services / chat.service.ts.ChatService.sendMessage(chat.service.ts :29)

  • 我正在将组件的代码发送到下面的服务文件中

.ts文件

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文件

<input class="chatInput" [(ngModel)]="message"/>

<button class="chatButton"  (click)=send()>Send</button>
  • 上面的组件代码将数据发送到与Firebase交互的服务

服务代码 - >

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',{
查询:{
limitToLast:25,
orderByKey:是的
}
});
}

当我在这上面徘徊时,我会得到一个下面给出的消息

**

[ts]类型'{query:{limitToLast:number; orderByKey:boolean; }; ''不能赋值给'QueryFn'类型的参数 . 对象文字只能指定已知属性,'QueryFn'类型中不存在'query' . (property)orderByKey:boolean

**

2 回答

  • 0

    有人似乎和你的问题一样,这篇文章已经回复了:Stackoverflow .

    请试试这个:

    getMessages(): Observable<ChatMessage[]> {
    return this.db.list('/messages', ref => {
      ref.limitTolast(25).orderByKey(true)
    });
    

    }

  • 0

    你的getMessage函数应该是这样的 .

    getMessages(): Observable<ChatMessage[]> {
        return this.db.list('/messages', ref => 
          let q = ref.limitTolast(25).orderByKey(true);
          return q;
        );
      }
    

    有关详细信息,请参阅此内容 . https://github.com/angular/angularfire2/blob/master/docs/rtdb/querying-lists.md

相关问题