【问题标题】:react firebase - filtering firebase fetched items by user uid valuereact firebase - 按用户 uid 值过滤 firebase 获取的项目
【发布时间】:2016-06-17 13:08:33
【问题描述】:

在我的反应应用程序中,我从 Firebase 获取项目列表以显示在列表视图中。

    this.fb = new Firebase(rootUrl + 'items/');
    this.bindAsObject(this.fb, 'items');
    this.fb.on('value', this.handleDataLoaded);

对于发布它的用户,每个项目都有一个 uid 值。

我在应用中使用authData.uid来获取登录用户的uid。

如何过滤列表以仅显示该用户的项目?

【问题讨论】:

    标签: reactjs firebase


    【解决方案1】:

    您是否尝试过使用snapshot 过滤列表?效率更高...

    这里是如何使用一个:

    var ref = new Firebase("https://YOUR-URL.firebaseio.com/");
        ref.orderByChild("location").equalTo("United States").on("child_added", function(snapshot) {
          document.write(snapshot.key());
        console.log(snapshot.key());
        });
    

    您问过:“我如何才能过滤列表以仅显示该用户的项目?”

    以上只是一个例子。在您的情况下,替换 locationproject,或您存储在数据库中的任何参数类型(https://YOUR-URL.firebaseio.com/),United States 将被替换 通过用户名、ID 或您为该用户存储的要在代码中识别的任何参数值

    一个基本的 Firebase 查询从我们的 orderBy 函数之一开始: orderByChild()orderByKey()orderByPriority()。然后你可以 将这些与其他五种方法结合起来进行复杂的查询: limitToFirst()limitToLast()startAt()endAt()equalTo()。找出要使用的函数。

    有关如何使用快照的更多详细信息,请参见此处firebase.com/blog/2014-11-04-firebase-realtime-queries.html

    【讨论】:

    • 非常感谢。像上面的函数一样,我实际上如何将过滤后的结果输入到 bindAsObject 中?我现在拥有的函数将所有项目放入数组中。
    • 欢迎您。正如我所说,使用equalTo() 在您的数据库中搜索用户,获取项目。你明白吗?如果我的答案解决了/对您有帮助,您能否将我的答案标记为已接受并投票?请在评论框中让我知道任何其他问题,如有必要,我会更新我的答案。谢谢,克里斯!
    • 没问题。我想做的是让用户将多个项目放入 this.bindAsObject(this.fb, 'items');像上面一样。我希望我解释得足够清楚。
    • 想通了。 'this.bindAsObject(this.fb.orderByChild("user").equalTo(authData.uid), 'items');感谢您的帮助
    猜你喜欢
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 2020-11-30
    • 2018-11-28
    • 1970-01-01
    • 2018-09-02
    • 2019-05-28
    相关资源
    最近更新 更多