首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更新Firebase查询中变量的值?

更新Firebase查询中变量的值?
EN

Stack Overflow用户
提问于 2016-05-14 14:59:09
回答 1查看 806关注 0票数 0

目前,我正尝试使用once从火基中提取项的值,并使用此值填充var itemsList。但是,尽管itemsList在once调用中被正确填充,但它在调用之外作为未定义的日志记录。我认为这可能与Firebase的异步特性有关,但我不知道如何解决这个问题。有什么建议吗?

代码语言:javascript
复制
submitAnswer: function() {
    var userRef = usersRef.child(key);

    //get items_list for user
    var itemsList;
    userRef.once('value', (snap) => {
        itemsList = snap.val().items_list;
        console.log('items list populated here' + itemsList);
    });

    console.log("items list not populated here" + itemsList);
},
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-14 15:37:49

关于Firebase调用是正确的,它是异步的,代码不会等到它完成后再记录未填充的itemsList。

如果您只想对数据做一些简单的事情,那么在执行任何操作之前,一定要检查它是否存在(并像处理异步数据那样处理它)。

代码语言:javascript
复制
if(itemsList){
  console.log('My items have arrived! ' + itemsList);
}

如果要在应用程序中进一步传播这些数据,通常建议使用Firebase的响应数据调用setState(),用刚刚获取的新数据触发组件的重呈现。

因此,一些类似于:

代码语言:javascript
复制
userRef.once("value", (snap) => {
  itemsList = snap.val().items_list;

  this.setState({
    items: itemsList;
  });

}.bind(this));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37228183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档