以下块是我的JSON。 -KTYLrHDHt234rFDNHrm 类型哈希值由客户端提供的API生成。我认为他们正在使用Firebase。
我在URL中传递一个查询,其中包含每个嵌套对象的pageId。
示例https://cms.app.io/edit/Nike3243
但是由于哈希是自动生成的,我如何搜索所有JSON并检查 pageId 是否与我的Angular路由匹配,然后只返回同一孩子的值。
{
"-KTYLrHDHtdq23423NHrm": {
"pageCreation": "10/8/2016, 14:14:22 PM",
"pageGallery": {
"slider_1_img": "http://",
"slider_2_img": "http://",
},
"pageId": "Nike13243",
"pageName": "Nike Campaign 1",
"store": "11"
},
"-KTYLrHDHtdqirFDNHrm": {
"pageCreation": "10/8/2016, 12:14:22 AM",
"pageGallery": {
"slider_1_img": "http://",
"slider_2_img": "http://",
},
"pageId": "Nike323243",
"pageName": "Nike Campaign 2",
"store": "12"
},
"-KTYLrHDHt234rFDNHrm": {
"pageCreation": "10/8/2016, 13:14:22 PM",
"pageGallery": {
"slider_1_img": "http://",
"slider_2_img": "http://",
},
"pageId": "Nike3243",
"pageName": "Nike Campaign 3",
"store": "13"
}
}
所以我想只返回 Nike3243 的数据,但我想返回商店,滑块和pageName。我怎么能这样做,因为KTYLrHDHt234rFDNHrm哈希是我永远不会知道的东西
cmsApp.controller('pages-edit', function ($scope, $http, $routeParams) {
var pageIdU = $routeParams.id;
$http.get(firebase_url+'cms/home.json'+randstatus).success(function(data) {
$scope.pages = data;
// this would be pageId = Nike3243
console.log(data.pageIdURI.pageName[pageId]);
});
});
由于
答案 0 :(得分:0)
假设您的对象名为'objTest',您可以执行以下操作:
var strPageId = 'The page id to find', objFound;
for( var strKey in objTest ) {
var objTemp = objTest[strKey];
if ( objTemp['pageId'] == strPageId ) {
objFound = objTemp;
break;
}
}
if ( typeof objFound == "object" ) {
//Do something...object has been found!
}
我实际上是这样做的:
$.each(data, function (bb) {
var crossReference = data[bb].transId;
if (crossReference==pageIdUri) {
$scope.transNameEn = data[bb].transNameEn;
$scope.transNameArabic = data[bb].transNameArabic;
$scope.transCreation = data[bb].transCreation;
$scope.transModified = data[bb].transModified;
$scope.notes = data[bb].notes;
}
});
答案 1 :(得分:0)
您可能更容易简单地转换数据,而不是一遍又一遍地执行此搜索。您可以循环访问数据一次并以正确的格式获取数据。
我会做类似的事情:
var recordLookup = {};
for (var id in records) {
var pageId = records[id].pageId;
recordLookup[pageId] = record[id];
recordLookup[pageId].originalId = id;
}
这样您现在可以通过其页面ID轻松查找任何记录。如果您需要以原始形式将数据发送回服务器,您仍然拥有原始ID,并且可以执行您需要的任何操作,以便以正确的格式获取数据。通过这种方式,您可以循环一次或两次,(一次进行查找,一次在操作结束时恢复),而不是任何时候需要从记录中获取数据。