循环遍历 firebase 数据库对象并重复结果

cpl*_*lus 2 angularjs firebase firebase-realtime-database

我正在重复存储在我的$firebaseArray对象中的对象。

mycontroller

var projectquery = DatabaseRef.ref("projects").orderByKey().equalTo("-KUTPrs6ARZXjbjtNr7O");
$scope.projectslist = $firebaseArray(projectquery);
Run Code Online (Sandbox Code Playgroud)

html 视图ng-repeat

<tr ng-repeat="obj in projectslist">
    <td>{{ obj.field1}}</td>
    <td>{{ obj.field2 }}</td>
    <td>{{ obj.field3 }}</td>
    <td>{{ obj.field4 }}</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

这仅显示一个项目,因为我手动将项目密钥传递给 equalTo 并因此过滤以显示一个。

另一方面,我通过在另一个获取项目密钥的数据库上执行 forEach 来从以下函数中获取一组项目密钥:

var keyquery = DatabaseRef.ref('/users/' + userId).orderByKey().once("value")
    .then(function onSuccess(snapshot) {
        snapshot.child("savedprojects").forEach(function(childSnapshot) {
            var userprojects = childSnapshot.val();
            console.log("my list is :", userprojects );
        });
    });
Run Code Online (Sandbox Code Playgroud)

控制台的输出是这样的:

my list is : -KUTLAZENGlxtzCtEfaZ
my list is : -KUTLM8r_kmVSTaxzLW5
my list is : -KUTPrs6ARZXjbjtNr7O
Run Code Online (Sandbox Code Playgroud)

题:

如何将上述从 forEach 获得的项目键列表传递到第一个显示项目并按键过滤它们的函数中?

有人可以给出相关答案并帮助我解决这个问题,而不参考与我的问题没有直接关系的其他答案吗?

提前致谢!

编辑:

我的 DatabaseRef 指的是这个工厂,它正在初始化 firebase 数据库:

app.factory("DatabaseRef", function() {
    return firebase.database();
});
Run Code Online (Sandbox Code Playgroud)

更新:

实施Gourav 的回答后,我的控制台显示 undefined 代替项目 ID: 在此处输入图片说明
如您所见,该用户的个人资料下有六个项目,但所有项目都是空的且未定义。

更新2:

这是 Gourav 编辑后的控制台输出:
在此处输入图片说明


以及 ng-repeat 的错误:
在此处输入图片说明

Gou*_*arg 5

我对 DatabaseRef 了解不多,但这可能会有所帮助。

$scope.projectslist = [];
DatabaseRef.ref('/users/' + userId).orderByKey().once("value")
.then(function onSuccess(snapshot) {
    snapshot.child("savedprojects").forEach(function (childSnapshot) {
        var userprojects = childSnapshot.val();
        console.log("my list is :", userprojects);
        var projectquery = DatabaseRef.ref("projects").orderByKey().equalTo(userprojects);
        $scope.projectslist.push(($firebaseArray(projectquery))[0]);
    });
});
Run Code Online (Sandbox Code Playgroud)