首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时循环中的防火墙推送到数据库

同时循环中的防火墙推送到数据库
EN

Stack Overflow用户
提问于 2020-03-30 18:20:04
回答 1查看 402关注 0票数 1

日安,

我正在尝试实现@mentions,这样用户就可以@其他用户了。

事情进展得很好,我已经差不多完成了,但我在最后一部分遇到了麻烦。

我试图通过使用regex来捕获他们的用户名来循环那些提到过的用户。我已经完成了,现在我的问题出现在我的循环中。

以下是我正在研究的内容:

代码语言:javascript
复制
onPostPress = async () => {
  this.setState(
    {
      addingComment: true,
    },
    () => {

    const re = /(?:^|[ ])@([a-zA-Z]+)/gm;
    const str = this.state.usersCommentText;
    var m;

    let mentionsArr = [];

    //OBJECT TO STORE IN USERS NODE
    let men = {
      username: this.props.userData.username,
      profileImg: this.props.userData.profilePic || null,
    };

    //INITIALIZE MULTI-PATH UPDATE
    const mentions = {};

    while ((m = re.exec(str)) != null) {
      if (m.index === re.lastIndex) {
        re.lastIndex++;
      }

    //THIS WORKS
      mentionsArr.push(m[1]);

    //THIS DOESN'T WORK :( 
     await firebase
        .database()
        .ref('users')
        .orderByChild('username')
        .equalTo(`${m[1]}`)
        .once('value', snapshot => {
          snapshot.forEach(child => {
            mentions[`/users/${child.key}/men`] = men;
          });
        });

    }
    firebase
        .database()
        .ref()
        .update(mentions);
  },
);

}如您所见,我正在遍历标记的用户,并试图将men对象设置为用户节点,这样我就可以触发一个云函数来发送通知,通知已经提到的用户。

当它完成后,我继续推送评论--但我不明白为什么这不起作用。

我可以从循环推送到数组中,没有任何问题,但不能推到firebase RTDB。

我希望在这个问题上有所帮助,让我朝着正确的方向前进,干杯!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-30 22:59:09

代码语言:javascript
复制
//THIS DOESN'T WORK :(
firebase
    .database()
    .ref('users')
    .orderByChild('username')
    .equalTo(`${m[1]}`)
    .once('value', snapshot => {
        snapshot.forEach(child => {
            mentions[`/users/${child.key}/men`] = men;
        });
    });

“它不工作”,因为它是异步的。你需要在做之前先做await

代码语言:javascript
复制
firebase
    .database()
    .ref()
    .update(mentions);

否则,在执行mentions时,update对象将为空。

我还认为您的while循环不应该包括最后一部分。您的意思是在循环中构建您的mentions,然后执行update,不是吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60936942

复制
相关文章

相似问题

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