我正在重复存储在$firebaseArray
对象中的对象。
mycontroller
:
var projectquery = DatabaseRef.ref("projects").orderByKey().equalTo("-KUTPrs6ARZXjbjtNr7O");
$scope.projectslist = $firebaseArray(projectquery);
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>
这只显示一个项目,因为我手动将项目键传递给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 );
});
});
控制台的输出如下:
my list is : -KUTLAZENGlxtzCtEfaZ
my list is : -KUTLM8r_kmVSTaxzLW5
my list is : -KUTPrs6ARZXjbjtNr7O
如何将从forEach获得的上述项目密钥列表传递到第一个显示项目并按键过滤它们的函数?
有人可以给出相关答案并帮助我解决这个问题,而不提及与我的问题没有直接关系的其他答案吗?
提前感谢!
我的DatabaseRef引用了这个工厂,它正在初始化firebase数据库:
app.factory("DatabaseRef", function() {
return firebase.database();
});
实施Gourav's answer后,我的控制台显示未定义的项目ID代替:
正如您所看到的,用户在他的个人资料下有六个项目,但所有项目都是空的且未定义。
答案 0 :(得分:4)
我对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]);
});
});