【问题标题】:Unable to access the object properties returned from firebase无法访问从 firebase 返回的对象属性
【发布时间】:2016-07-05 10:13:13
【问题描述】:

这可能是一个菜鸟问题,因为我在 stackoverflow 中找不到任何类似的问题。我正在编写一个以 firebase 作为后端的 ionic-angularjs 应用程序。我有一个由 firebase snapshot.val() 方法返回的数据快照,这就是数据在我的 chrome 控制台中显示的方式(附图)

var tmp = {};
CurrUser.getEventdesc(eventid).then(function (result) {
tmp = result;
console.log(tmp.Description);
});

CurrUser 是工厂,getEventdesc 是工厂中的函数。 getEventdesc 函数如下所示:

getEventdesc: function(id) {
var deferred = $q.defer();
ref.child('Events').orderByChild('Eventid').equalTo(id).on('value', function (snapshot) {
event = snapshot.val();
console.log(event);
deferred.resolve(event);
});
return deferred.promise;
}   

现在我正在尝试通过 tmp.Description 在我的 angularjs 控制器中访问“描述”属性,但出现“未定义”错误。如果有人可以帮助我访问对象属性,我将不胜感激。感谢您的宝贵时间。

更新 2:

var tmp = {};
var newtemp = {}; 
CurrUser.getEventdesc(eventid).then(function (result) { 
tmp = result;
for (var itemID in tmp) { 
newtmp = tmp[itemID]; 
}; 
console.log(newtmp.Description); 
});

问候,

【问题讨论】:

  • 请贴出您要访问该属性的代码,以及错误消息。

标签: angularjs firebase firebase-realtime-database


【解决方案1】:

您正在重新调整整个 firebase 对象,而不仅仅是请求的 id,试试这个:

event = snapshot.val();
deferred.resolve(event[id]);

【讨论】:

  • 感谢@Martijn Welker 这就是我的代码现在的样子并且能够访问对象属性。你认为这是正确的方法吗?再次感谢。 var tmp = {}; var newtemp = {}; CurrUser.getEventdesc(eventid).then(function (result) { tmp = result; for (var itemID in tmp) { newtmp = tmp[itemID]; }; console.log(newtmp.Description); });
  • @AjRev 我的代码更新了,请看一下
  • 谢谢@Martijn。事实上,我需要整个对象并使用控制器中的其他属性。如果您能查看我在回复您的评论时发布的代码,将不胜感激。出于某种原因,我无法正确缩进代码。我在 for 循环中分配了一个新对象“newtmp”,然后通过 newtmp.Description 访问该属性。我不确定这是否是正确的方法。再次感谢。
  • @AjRev 您能否将格式正确的代码作为新问题发布,评论不应用作聊天
  • 很抱歉。您能否检查原始问题中的更新 2?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 2021-11-06
相关资源
最近更新 更多