从本地计算机访问Firebase数据库

时间:2019-06-16 17:54:11

标签: javascript node.js firebase

我是JavaScript,Web开发和Firebase的新手。我正在尝试使用简单的脚本来学习它。

我写了以下脚本:

console.log("Starting")
var firebase = require("firebase/app");

// Add the Firebase products that you want to use
require("firebase/auth");
require("firebase/firestore");
require('firebase/database');


console.log("Firebase was imported")

var firebaseConfig = {
    apiKey: ...,
    authDomain: ...,
    databaseURL: ...,
    projectId: ...,
    storageBucket: ...,
    messagingSenderId: ...,
    appId: ...
  };
  // Initialize Firebase

console.log("Firebase  initializition")
firebase.initializeApp(firebaseConfig);

console.log("connect to db")
var database = firebase.database();


function writeApartmentData(apartmentId, street_, number_, floor_, door_) {
    firebase.database().ref('apartments/' + apartmentId).set({
      street: street_,
      number: number_,
      floor: floor_,
      door: door_

    });
  }

console.log("write apartment data")
writeApartmentData(1, "calle amalia", 18, 3, "B")



console.log("End");

我得到以下信息:

luca@luca-VirtualBox:~/PisoReview$ node index.js 
Starting
Firebase was imported
Firebase  initializition
connect to db
write apartment data
End
[2019-06-16T17:52:19.193Z]  @firebase/database: FIREBASE WARNING: set at /apartments/1 failed: permission_denied 
(node:10870) UnhandledPromiseRejectionWarning: Error: PERMISSION_DENIED: Permission denied
    at /home/luca/PisoReview/node_modules/@firebase/database/dist/index.node.cjs.js:13139:33
    at exceptionGuard (/home/luca/PisoReview/node_modules/@firebase/database/dist/index.node.cjs.js:695:9)
    at Repo.callOnCompleteCallback (/home/luca/PisoReview/node_modules/@firebase/database/dist/index.node.cjs.js:13130:13)
    at /home/luca/PisoReview/node_modules/@firebase/database/dist/index.node.cjs.js:12907:19
    at /home/luca/PisoReview/node_modules/@firebase/database/dist/index.node.cjs.js:12078:17
    at PersistentConnection.onDataMessage_ (/home/luca/PisoReview/node_modules/@firebase/database/dist/index.node.cjs.js:12111:17)
    at Connection.onDataMessage_ (/home/luca/PisoReview/node_modules/@firebase/database/dist/index.node.cjs.js:11394:14)
    at Connection.onPrimaryMessageReceived_ (/home/luca/PisoReview/node_modules/@firebase/database/dist/index.node.cjs.js:11388:18)
    at WebSocketConnection.onMessage (/home/luca/PisoReview/node_modules/@firebase/database/dist/index.node.cjs.js:11289:27)
    at WebSocketConnection.appendFrame_ (/home/luca/PisoReview/node_modules/@firebase/database/dist/index.node.cjs.js:10892:18)
(node:10870) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:10870) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
^C
luca@luca-VirtualBox:~/PisoReview$ ^C

我尝试了其他选项,但我不断收到此“拒绝权限”错误。我该如何解决?

编辑1:

在我的Firebase仪表板中。在Database - Rules部分中,我有:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

据我了解,这应该意味着每个人都可以访问该数据库。

1 个答案:

答案 0 :(得分:1)

我认为您应该配置数据库规则才能使用它。检查以下link,以了解更多信息。

编辑:

检查和添加规则的步骤:

  1. 登录https://console.firebase.google.com/并选择您的数据库。在侧面板上,应单击database,然后在主面板上将有两张卡。一种是Cloud Firestone,另一种是实时数据库。
  2. 选择实时数据库。打开数据库后,您将在其顶部有一个新菜单,上面显示“ Data” |“ Data”。 “规则” | “备份” | “用法”。
  3. 单击Rules
  4. 现在设置您自己的规则以能够从数据库读取和写入。它接受JSON格式,例如:
{
  "rules": {
    ".read": true,
    ".write": true
  }
}

如果要查找有关此选项的更多信息,请检查我发布的链接。我希望它能解决您的问题。