📅  最后修改于: 2023-12-03 15:00:45.973000             🧑  作者: Mango
Firebase 实时数据库是一款云端的 NoSQL 数据库,它可以让开发者很方便地构建基于实时数据的应用程序。Firebase 实时数据库是基于云端的,并且可以提供实时的同步,所以可以保证客户端和数据库的数据的同步。此外,Firebase 实时数据库有一个非常简单易用的 API,开发者可以很快上手并操作它。
Firebase 实时数据库是一种实时数据库,可以让开发者很方便地构建实时数据应用程序。当数据更新时,Firebase 实时数据库可以立即通知所有客户端。这意味着,可以很容易地在你的应用中构建实时聊天、协作、游戏和其他应用。
Firebase 实时数据库提供了一种灵活的安全规则系统,它可以限制客户端访问数据库的权限。开发者可以使用 Firebase 安全规则语言来编写规则,该语言基于 JSON,并提供多种安全规则类型,可以自定义授权控制。
Firebase 实时数据库提供了离线支持,即使应用在没有网络连接的情况下也可以读取和写入数据。当设备重新连接到互联网时,Firebase 实时数据库会自动将离线数据同步到云端。
Firebase 实时数据库可以与其他 Firebase 产品集成,包括 Firebase Storage 、Firebase Authentication、Firebase Cloud Messaging、Firebase Remote Config 等。此外,Firebase 实时数据库还可以与 Google Analytics 集成,以便收集并分析应用程序的数据。
Firebase 实时数据库以树形结构组织数据,其中每个节点都是一种 JSON 值。节点可以是简单的值,如字符串、数字、布尔值和 null,也可以是 JSON 对象或数组。
每个节点都有一个唯一的路径,该路径从数据库根节点开始,描述了要访问的节点的位置。节点路径是一种字符串类型的值,由节点的名字组成,多层节点之间以“/”分隔。例如,下面的 JSON 数据中,“users”节点下有两个子节点,“alanisawesome”和“gracehop”:
{
"users": {
"alanisawesome": {
"name": "Alan Turing",
"email": "alan@turing.com",
"phoneNumber": "1234567890"
},
"gracehop": {
"name": "Grace Hopper",
"email": "grace@hopper.com",
"phoneNumber": "0987654321"
}
}
}
“users/alanisawesome”节点的值为:
{
"name": "Alan Turing",
"email": "alan@turing.com",
"phoneNumber": "1234567890"
}
Firebase 实时数据库支持以下数据类型:
JSON 对象是由一组键值对组成的无序集合。每个键值对有一个名称(字符串类型)和一个值(任意 JSON 值)。JSON 数组是一组有序的值。
对象示例:
{
"name": "Alan Turing",
"email": "alan@turing.com",
"phoneNumbers": {
"home": "1234567890",
"work": "0987654321"
}
}
数组示例:
{
"users": [
{
"name": "Alan Turing",
"email": "alan@turing.com",
"phoneNumber": "1234567890"
},
{
"name": "Grace Hopper",
"email": "grace@hopper.com",
"phoneNumber": "0987654321"
}
]
}
Firebase 实时数据库允许客户端通过监听来实时接收更改通知。开发者可以使用 on() 方法来监听在特定节点上的更改,当该节点数据更新时,客户端将立即收到通知。
开发者可以使用 on() 方法来监听数据更改:
firebase.database().ref('/users/alanisawesome').on('value', (snapshot) => {
const data = snapshot.val();
console.log(data);
});
以上代码将在“users/alanisawesome”节点上添加值监听器。当该节点的值更改时,将打印新值。
开发者可以使用 set() 方法在数据库中写入数据:
firebase.database().ref('/users/alanisawesome').set({
name: 'Alan Turing',
email: 'alan@turing.com',
phoneNumber: '1234567890'
});
以上代码将在“users/alanisawesome”节点写入一个新值。
Firebase 实时数据库提供了一种非常灵活的安全规则系统,可以限制客户端访问数据库的权限。安全规则基于 JSON 格式,可以使用 Firebase 安全规则语言来编写,包括多种安全规则类型和自定义授权控制。
以下是一个简单的安全规则示例,它允许任何用户读取数据,但对写入数据库的数据进行限制:
{
"rules": {
".read": true,
".write": "auth != null"
}
}
以上规则允许任何人读取数据,但只有登录用户可以写入数据。
如果应用程序需要更复杂的授权控制,可以使用 Firebase 安全规则语言进行自定义。以下是一个复杂的规则示例,它允许管理员角色的用户读写数据,但只允许普通用户读取数据:
{
"rules": {
"users": {
".read": "auth != null",
".write": "auth.token.admin == true",
"$uid": {
".read": "auth != null && ($uid == auth.uid || auth.token.admin == true)",
".write": "auth != null && ($uid == auth.uid || auth.token.admin == true)"
}
}
}
}
以上规则中,“users”节点可以由任何已登录用户读取,但只有 Firebase Auth 管理员可以写入数据。每个用户的节点只能由该用户本人或管理员读写。
Firebase 实时数据库可以使用 Firebase SDK 进行访问。Firebase SDK 是一组前端库,提供了开发用于构建基于云的应用程序所需的功能。
安装 Firebase SDK 非常简单。只需将以下代码添加到 HTML 文件的 head 标签中:
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-database.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-auth.js"></script>
然后,使用以下代码初始化 Firebase SDK:
const firebaseConfig = {
apiKey: 'apiKey',
authDomain: 'projectId.firebaseapp.com',
databaseURL: 'https://databaseName.firebaseio.com',
projectId: 'projectId',
storageBucket: 'bucket.appspot.com',
messagingSenderId: 'senderId',
appId: 'appId',
measurementId: 'G-measurement-id',
};
firebase.initializeApp(firebaseConfig);
Firebase 实时数据库是一款优秀的云端 NoSQL 数据库,可方便地构建实时数据应用程序。它提供了实时同步、客户端安全、离线支持等功能,并且具有非常灵活的安全规则系统。通过使用 Firebase SDK,开发者可以很容易实现与 Firebase 实时数据库的集成。