打字稿错误 - 预期1个参数,但得到0

时间:2018-06-08 03:03:38

标签: typescript firebase firebase-realtime-database angularfire2

我在Ionic / Angular中使用我的打字稿代码出错了。错误输出是:

  

[22:55:09] typescript:C:/ xampp / htdocs / project x / anonymous-social / src / pages / chat / chat.ts,line:103               预期1个参数,但得到0。

     

L102:if(!this.isUserThreadEmpty){

     

L103:让threadKey = this.database.list(' users /' + this.userData.uid +' / threads /' + this.recipient).push( ).KEY;

     

L104:let recipientData = {

我不确切地知道它为什么会发生,我猜想push()需要一个参数,但我在网上看到的有关如何获得key的所有stackoverflow答案firebase指出了这个解决方案,所以我不确定发生了什么。

实际代码是:

if(!this.isUserThreadEmpty) {
  let threadKey = this.database.list('users/'+this.userData.uid+'/threads/'+this.recipient).push().key;
  let recipientData = {
    recipient: this.recipient,
    threadId: threadKey,
    displayName: this.displayName,
  }

有什么想法吗?我需要将key传递给recipientData ...我做错了什么?

1 个答案:

答案 0 :(得分:2)

您正在使用AngularFire2。 push method in AngularFire2需要参数。

您链接的问题和文档适用于常规Firebase JavaScript SDK,其中push的参数是可选的。

您最好的选择是使用常规JavaScript SDK执行此操作,因为通过AngularFire2包装器执行此操作没有任何优势:

let threadKey = firebase.database().ref().push().key;

来自Jane的评论:要使用Firebase JavaScript SDK,您需要:

import * as firebase from 'firebase/app';

更新(2018-06-08):我刚发现还有一个创建推送ID的专用方法AngularFireDatabase.createPushId()。所以我认为在你的情况下,{是database.createPushId()