【问题标题】:How to search filter firebase with vue如何使用 vue 搜索过滤器 Firebase
【发布时间】:2019-01-10 03:35:32
【问题描述】:

我想搜索我的 firebase 数据库,以便用户能够找到他们正在搜索的产品。

目前我正在将数据属性 this.searchText 与 firebase 中的 product.title 进行匹配。

return str.filter((product) => {
    return product.title.match(textSearch)
})

我对此有疑问:

如果数据库包含 1000 个产品,则过滤网站上的产品是没有意义的,而是进行有效的查询,例如:

firebase.database.ref('products').containing('leather shoe')

我只是找不到合适的解决方案。

【问题讨论】:

  • For 1.:由于代码相同(除了字符串),没有办法给出任何提示。您应该提供一些示例数据和使用过滤器的周边方法。
  • 当然......在等待答案的同时,我终于找到了第一个问题的解决方案(监督旧方法)。我现在已经编辑了问题。
  • 如何从 firebase 获取产品列表?

标签: javascript firebase vue.js vuefire


【解决方案1】:

Firebase.database.ref('products') 返回一个 Reference,并且没有 containing() 方法作为参考。

最相似的方法是equalTo(),详见here

如果保存值“皮鞋”的字段是“类型”字段,您可以执行以下操作:

var ref = firebase.database().ref("products");
ref.orderByChild("type").equalTo("leather shoe").on("child_added", function(snapshot) {
  console.log(snapshot.key);
});

使用 vuefire 你会这样做:

var firebaseApp = firebase.initializeApp({ ... })
var db = firebaseApp.database()

var vm = new Vue({
  el: '#demo',
  firebase: 
    anArray: db.ref("products").orderByChild("type").equalTo("leather shoe")
  }
})

【讨论】:

  • 但我发现这个解决方案的问题是用户必须准确输入存储在 firebase 中的标题。假设用户键入“皮革” - 那么存储为“皮革鞋”的鞋将不会被检索。 @RenaudTarnec
  • 确实如此。无法像 SQL 中的 LIKE 那样查询实时数据库。您可以在以下 SO 帖子中找到一些解决方法:stackoverflow.com/questions/22506531/…
猜你喜欢
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
相关资源
最近更新 更多