我在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
...我做错了什么?
答案 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()
。