Firebase 财产';捕捉';不存在于类型';承诺式<;无效>;

Firebase 财产';捕捉';不存在于类型';承诺式<;无效>;,firebase,ionic-framework,ionic2,ionic3,angularfire2,Firebase,Ionic Framework,Ionic2,Ionic3,Angularfire2,我在下面的代码中得到了这个错误。我正在使用ionic3: 类型“PromiseLike”上不存在属性“catch” 这是我正在关注的链接 此错误显示在VS代码中 这可能是我不知道的一些更新的语法 storetoken(t) { this.afd.list(this.firestore).push({ uid: firebase.auth().currentUser.uid, devtoken: t }).then(() => { alert('Token stored'

我在下面的代码中得到了这个错误。我正在使用ionic3:

类型“PromiseLike”上不存在属性“catch”

这是我正在关注的链接

此错误显示在VS代码中

这可能是我不知道的一些更新的语法

 storetoken(t) {
  this.afd.list(this.firestore).push({
  uid: firebase.auth().currentUser.uid,
  devtoken: t

}).then(() => {
  alert('Token stored');
  })
  .catch(() => {
    alert('Token not stored');
  })

this.afd.list(this.firemsg).push({
  sendername: 'vivek',
  message: 'hello'
}).then(() => {
  alert('Message stored');
  })
  .catch(() => {
    alert('Message not stored');
 })  
}
**这是home.ts文件的完整代码,该文件将令牌发送到firebase数据库:请同时参考此代码,因为我还收到另一个错误:error:Uncaught(承诺中):error:StaticInjectorError[AngularFireDatabase],当我移除catch块时**

 import { Component } from '@angular/core';
 import { NavController } from 'ionic-angular';
 import { AngularFireDatabase } from 'angularfire2/database';

 import firebase from 'firebase';
  import { HttpClientModule } from '@angular/common/http';
  import { HttpModule } from '@angular/http';

 declare var FCMPlugin;
 @Component({
   selector: 'page-home',
   templateUrl: 'home.html'
  })
 export class HomePage {
  firestore = firebase.database().ref('/pushtokens');
  firemsg = firebase.database().ref('/messages');
  constructor(public navCtrl: NavController, public afd: 
  AngularFireDatabase) {
  this.tokensetup().then((token) => {
  this.storetoken(token);
  })
  }

 ionViewDidLoad() {
 FCMPlugin.onNotification(function(data){
 if(data.wasTapped){
  //Notification was received on device tray and tapped by the user.
  alert( JSON.stringify(data) );
  }else{
  //Notification was received in foreground. Maybe the user needs to be 
   notified.
   alert( JSON.stringify(data) );
   }
  });

  FCMPlugin.onTokenRefresh(function(token){
  alert( token );
  });    
  }

  tokensetup() {
  var promise = new Promise((resolve, reject) => {
  FCMPlugin.getToken(function(token){
  resolve(token);
  }, (err) => {
    reject(err);
  });
  })
  return promise;
  }

  storetoken(t) {
  this.afd.list(this.firestore).push({
  uid: firebase.auth().currentUser.uid,
  devtoken: t

   }).then(() => {
   alert('Token stored');
   }).catch(() => {
    alert('Token not stored');
   })

  this.afd.list(this.firemsg).push({
  sendername: 'vivek',
  message: 'hello'
  }).then(() => {
  alert('Message stored');
  }).catch(() => {
    alert('Message not stored');
  })  
  }

  }
返回一个
EnableReference
,而不是
承诺

承诺与参照相结合;写入完成时解析,但可立即用作对子位置的引用

这意味着您可以将其用作将来对书面数据的引用

另见中的。 启用引用定义


注意:如果你想遵循它,还有一个悬而未决的问题。

这主要是一个角度的问题,而不是离子型的。@estus不是真的,这是一个firebase/angularfire2怪癖谢谢你的回答。我已经对代码进行了建议的编辑。现在我得到了一个新的错误,它说:“应该是1个参数,但是得到了0。”在行中,让myNewIdRef=this.afd.list(this.firestore.push();那我想你是抓不到了
this.afd.list(this.firestore).push({uid:firebase.auth().currentUser.uid,devtoken:t})
。。AngularFire2中可能存在不使用catch的问题。我得到了错误:Uncaught(承诺):Error:StaticInjectorError[AngularFireDatabase]:在使用它时,我们又回到了同一个错误上。类型“PromiseLikethink”上不存在属性“catch”,这是另一个错误,。你在导入中设置AngularFireDatabaseModule了吗?我已经编辑了这个问题并上传了整个代码。请参阅。非常感谢。
 export interface ThenableReference extends Reference, PromiseLike<Reference> {}
 this.afd.list(this.firestore).push({ uid: firebase.auth().currentUser.uid, devtoken: t });