指定firebase实时数据库请求的条件和限制

时间:2017-02-18 12:46:00

标签: ruby-on-rails ruby firebase firebase-realtime-database

我试图在firebase实时数据库中存储某些特定信息。我的数据库结构如下所示:

    {
  "contacts" : {
    "-KdD1f0ecmVXHZ3H3abZ" : {
      "email" : "ksdsd@sdsd.com",
      "first_name" : "John",
      "last_name" : "Smith",
      "organization_id" : 1
    },
    "-KdG4iHEYjInv7ljBhgG" : {
      "email" : "superttest@sds213123d.com",
      "first_name" : "Max1",
      "last_name" : "Rosse13131313l",
      "organization_id" : 1
    },
    "-KdGAZ8Ws6weXWo0essF" : {
      "email" : "superttest@sds213123d.com",
      "first_name" : "Max1",
      "last_name" : "Rosse13131313l",
      "organization_id" : 1
    }
  }
}

我需要能够像这样的SQL示例一样指定条件:

SELECT * FROM contacts WHERE organization_id = :id LIMIT :start, :end

有没有办法在数据库中使用Ruby或至少他们的REST API?

1 个答案:

答案 0 :(得分:0)

解决方案可分为两个步骤。

步骤1)如果尚未完成,则必须更新firebase数据库中的规则。

{
  "rules": {
     "read": "auth !=null",
     "write": "auth !null",
     "REPLACE_WITH_ROOT_NODE_NAME": {
       "contacts": {
          "indexOn": ["organization_id"]
       }
     }
  }
}

步骤2)从firebase数据库中获取数据。其余的API请求应该是这样的

https://app-name.firebaseio.com/REPLACE_WITH_ROOT_NODE_NAME/contacts.json?auth=REPLACE_WITH_DATABASE_PASSWORD&orderBy="organization_id"&equalTo="REPLACE_WITH_ORGANIZATION_ID"&LimitToFirst=N