在列表

时间:2017-02-02 12:38:30

标签: javascript angular firebase firebase-realtime-database angularfire2

我将一些用户信息保存到firebase数据库中。我还想在成功保存后检索它的路径。我能够做得很好,但是,我对我收到的数据感到困惑,如下所示。

screenshot

所以,如果我想要获得路径,我必须运行

data.path.o

为什么这种格式如此奇怪?我看到U,Nc,m,path,Y o。他们是假设是这样还是我错过了什么?

我正在使用带有以下代码的角度2 + angularfire2

  saveUserToFirebase(user: User): firebase.database.ThenableReference {
    const userRef = this.af.database.list('/users/' + user.company);
    return userRef.push(user)
  }

this.databaseService.saveUserToFirebase(user)
    .then( data => {
        console.log('User saved to firebase databse with path', data); 
        console.log('User saved to firebase databse with path1', data.path); 
        console.log('User saved to firebase databse with path2', data.path.o); 

        this.router.navigate(['/login']);
        this.isLoading = false;
    }, error => {
        this.isLoading = false;
        console.log("Error asjf0e", error);
    })

1 个答案:

答案 0 :(得分:7)

您从saveUserToFirebase返回的是ThenableReference,它是对数据库中某个位置的引用。引用不包含实际数据,它只是指向位置。

要从参考中获取完整网址,请在其上调用toString

this.databaseService.saveUserToFirebase(user)
    .then( ref => {
        console.log('User saved to firebase database with URL', ref.toString()); 

        this.router.navigate(['/login']);
        this.isLoading = false;
    }, error => {
        this.isLoading = false;
        console.log("Error asjf0e", error);
    })

要获得绝对路径(没有域),可以使用字符串操作:

var path = ref.toString().substring(ref.root.toString().length);