0

我来自 SQL,第一次尝试 Firebase。Firebase 可以进行此查询吗?

SELECT
    name,
    AVG(rating) as avgRating
FROM restaurants
JOIN reviews
    ON restaurants.ID = reviews.restaurantsID
GROUP BY restaurants.ID
ORDER BY avgRating;

如果是的话,你能给我一个关于 Firebase for SQL 的博客、教程或高级课程的链接吗?(最好是 Web 版 Firebase)

4

1 回答 1

1

连接是所有 NoSQL 风格数据库的主要弱点。这源于它们的工作方式:查询只是对 JSON 存储的直接读取。(这也赋予了他们力量:速度和可扩展性。)

如果您使用的是 Firebase 实时数据库,那么最好的方法是对数据进行非规范化并执行两个查询。看起来像这样:

firebase.db.ref("/path/to/ref").on("value", (snapshot) => {
  if(snapshot.val()){
    firebase.db.ref(`/second/ref/${snapshot.val().joinValue}`).on("value", (snapshot2) => {
      console.log(snapshot2.val()) // Do something
    }
  }
})

最近,Firebase 发布了他们的新FireStore 数据库,该数据库旨在解决实时版本的一些弱点。但是,我不认为加入问题是专门解决的(最终解决方案可能类似于我的示例。)

最后,我经常使用 Firebase,我怀疑他们可能正在使用受 GraphQL 启发的解决方案,这将是基于 SQL 的数据库的完整接口。我预计这将在未来 12 个月内下降。

于 2017-10-22T23:25:03.200 回答