推送到列表后获取 firebase 中的路径

Get path for in firebase after pushing onto a list

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

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

data.path.o

为什么这个格式这么奇怪?我看到 U、Nc、m、路径、Y o。他们应该看起来像那样还是我错过了什么?

我正在使用 angular 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);
    })

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

要从引用中获取完整的 URL,请对其调用 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);