加入两个表AngularFire2 Firebase

时间:2017-04-03 01:23:27

标签: angular firebase firebase-realtime-database angularfire2

我决定对我的Firebase数据库进行非规范化以尝试使连接变得更容易,但是我仍然处于非规范化之前的位置。

问题在于:

我连接到user_address表并根据传入的位置过滤地址,这将是状态。

每个地址条目都有一个用户个人资料ID,$key然后,我使用它来连接到个人资料表,并检索与传入的$key匹配的个人资料。

到目前为止,这是我的代码:

getSearchResults(location: string): Observable<any[]> {

    var usersAddress = this.af.database.list('/user_address/', {
        query: {
            query: {
                orderByChild: 'State',
                equalTo: location
            }
        }
    }).map(address => {
         address.map(entry => {
            entry.profile = this.af.database.object('/users/' + entry.$key)
         });

         console.log(address);

         return address;
    });


     return usersAddress;

} 

两个问题。

1)当我删除return userAddress时,我得到Observable<any[]>下的红色错误行,其中包含:声明类型既不是'void'也不是'any'的函数必须返回一个值。

2)运行console.log(address)时,我看到以下内容:

enter image description here

此处的问题是个人资料的类型为:FirebaseObjectObservable,我希望看到用户个人资料...

任何人都可以解释我如何解决这个问题?我个人觉得到目前为止我编写代码的方式并不完全正确,即有两个返回语句是一个明显的问题。

**更新**

好的,所以这段代码按预期工作:

this.results = this.af.database.list('/user_address/', {
            query: {
                query: {
                    orderByChild: 'State',
                    equalTo: location
                }
            }
        }).map(addresss => {
            addresss.map(address => {
                this.af.database.object('/users/' + address.$key)
                    .subscribe(user => {
                        address.userdata = user;
                    });
                this.af.database.list('/user_photos/' + address.$key, {
                    query: {
                        orderByChild: 'Profile_Pic',
                        equalTo: true
                    }
                }).subscribe(photo => {
                    address.photos = photo;
                })
                return address;
            })
            return addresss;
        });
        return this.results

但是我在控制台中看到两个关于.indexOn的警告: FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": "Profile_Pic" at /user_photos/uuBldNXtXlSvK1fOKMTQzCKMqlj2 to your security rules for better performance

我知道如何修复,但是因为我看到两个我只能假设这可能会返回两个数据集?

0 个答案:

没有答案