在promise中访问值

时间:2014-09-22 08:20:01

标签: angularjs firebase

我的控制器中有这个代码用于创建Item

Item.create(short).then(function(response){
  console.log(response);
});

这是来自相应服务的摘录,返回promise

return sync.$set({title: "test", random: "random string created in this service"});

我现在想要使用在我的控制器中创建的random字符串。我收到了回复,但我不确定如何访问数据。

我已尝试response.random response.data.random等,但我尝试的所有内容都是undefinded

1 个答案:

答案 0 :(得分:0)

您的代码示例非常简洁(来自您的服务的一行代码?),您的故障排除详细信息也有点简洁。请提供尽可能多的数据,以帮助我们制定完整的图片。

根据可用内容做一些假设,并阅读the documentation on AngularFire's $set method,我们可以提出以下建议:

  • $ set返回一个解析为 firebase引用的承诺(不是您发送的数据;不是快照)
  • 您希望收到随机ID(或您发送的json数据)
  • 我们可以使用更好的设计,更全面地了解您的用例

通过链接承诺并返回您想要的任何内容,快速了解如何解决此问题,而不是那些无用的参考:

var randomId = /* some magic */;
var data = {title: "test", random: randomId};
return sync.$set(data).then(function(ref) {
   return sync; // we could also return data here, sync seems the most flexible
});

现在我们可以执行以下操作:

Item.create(short).then(function(item){
  console.log(item.random);
}/*, function(error) {} */);