如何唯一地获取推送 ID
How to get push id uniquely
我正在建立一个论坛,我正在浏览。我有这个(简化的)代码:
//Setting Views
//Adding Them..
$scope.views = $firebaseObject(refService.ref().child("Topics"))
refService.ref().child("Topics").once("value", function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var key = childSnapshot.key();
var childData = childSnapshot.val();
if(childData.DateCreated == $stateParams.DATE && childData.Email == $stateParams.EMAIL){
refService.ref().child("Topics").child(childData.pushKey).child("Views").child(currentAuth.uid).set({
Views : true
})
}
})
})
//Viewing them
$scope.viewableView = $firebaseObject(refService.ref().child("Topics"))
如您所见,添加视图非常容易。我做对了。问题在于显示视图数量,我必须使用 AngularFire 的$firebaseObject
,或者$firebaseArray
......这是数据库中的结构:
{
"Topics" : {
"-KG9rDNLZksJDiLfAXwH" : {
"Avatar" : "http://cs624223.vk.me/v624223037/2b1bb/GRTKddkmXiw.jpg",
"DateCreated" : 1461544873669,
"Email" : "abogale2@gmail.com",
"Title" : "Check",
"UID" : "3caf2136-7a2d-4ae4-a4a9-119f2b08133c",
"Username" : "BruhBrhu",
"Value" : "Check",
"Views" : {
"3caf2136-7a2d-4ae4-a4a9-119f2b08133c" : {
"Views" : true
}
},
"pushKey" : "-KG9rDNLZksJDiLfAXwH"
}
},
"UserAuthInfo" : {
"3caf2136-7a2d-4ae4-a4a9-119f2b08133c" : {
"BronzeBadge" : 0,
"Description" : "Just a wierd 15 year old coder...",
"Email" : "abogale2@gmail.com",
"GoldBadge" : 0,
"Image" : "http://cs624223.vk.me/v624223037/2b1bb/GRTKddkmXiw.jpg",
"Moderator" : false,
"Password" : "KfUcQ1yedOi1gEnGP6i1KQ==",
"PlatinumBadge" : 0,
"SilverBadge" : 0,
"UID" : "3caf2136-7a2d-4ae4-a4a9-119f2b08133c",
"Username" : "BruhBrhu"
}
}
}
如您所见,我使用了push()
,以获取主题。我现在关心的是如何查看主题!请帮忙!我想不出一个"算法"来做到这一点!
请注意,所有主题都有唯一的 ID。我必须获取用户所在的特定 ID。
这对我有用:
refService.ref().child("Topics").once("value", function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var key = childSnapshot.key();
var childData = childSnapshot.val();
if(childData.DateCreated == $stateParams.DATE && childData.Email == $stateParams.EMAIL){
refService.ref().child("Topics").child(childData.pushKey).child("Views").on("value", function(snapshot){
console.log(snapshot.numChildren())
$scope.countViews = snapshot.numChildren();
})
}
})
})
我不知道如何,但不知何故$scope.countViews,变成了三向绑定到我的 HTML,所以它实际上显示了!
您将键嵌套在对象中,Firebase 文档明确建议不要这样做。
但是,一旦您意识到还可以将方法添加到范围,它就可以工作:
var app = angular.module('app', ['firebase']);
app.constant('FB_URL', 'https://yours.firebaseio.com/');
app.controller('MainCtrl', function(FB_URL, $scope, $firebaseArray, $firebaseObject) {
var ref = new Firebase(FB_URL);
$scope.topics = $firebaseArray(ref.child('Topics'));
$scope.getCount = function(obj) {
return Object.keys(obj).length;
};
});
和观点:
<body ng-controller='MainCtrl'>
<ol><li ng-repeat='topic in topics'>{{topic.Title}} - {{topic.Username}} - {{getCount(topic.Views)}}</li></ol>
</body>
工作日报:http://jsbin.com/dapoga/edit?html,js,output
相关文章:
- Html地图对象-点击地图获取id的一部分
- 通过localStorage中的密钥获取ID
- 如何从值的Angular下拉列表中获取ID
- 如何从对象中获取id
- 使用jQuery来foreach iframe-src,并通过函数获取ID和操作
- 如何在使用node.js时从URL中获取Id
- 通过单击链接(兄弟姐妹?)从无线电输入中获取id
- 如何从Url客户端获取Id
- jQuery无法从下拉列表中获取id
- 可以'无法从列表项中获取id
- 从子输入中获取id值,并在更改时将其推送到Javascript中的数组中
- Javascript:如何从不同的ID中获取ID和name属性
- 如何获取id并在ror中基于该id显示下一个字段
- 这个_Meteor js中的Iron控制器无法访问id.如何获取id
- 使用 jQuery 从 HTML 获取 id,给出意想不到的结果
- 如何在select标记上使用javascript获取id名称
- 如何从包含HTML代码和许多UL标签及其ID的JavaScript变量A中获取
- ID
- 如何在创建保存新模型时获取id
- 对话框,数据选择器获取id
- 如何从以某个单词(regexp)结尾的字符串中获取id