2016-05-22 18 views
7

Tôi mới sử dụng nodejs, nhưng đã có chương trình máy khách js đang hoạt động, trong Firebase phiên bản 3.0.2. Nó chỉ ra tôi cần một máy chủ để làm một số điều đơn giản không thể trong một khách hàng js.Ứng dụng Nodejs với Firebase mới không truy xuất các mục cơ sở dữ liệu

Khi tôi thử điều cơ bản này trong nodej, không có gì xảy ra - dữ liệu trong cơ sở dữ liệu không bao giờ được truy xuất và chương trình máy chủ nút tiếp tục chạy mà không có lỗi. Chương trình máy chủ (server.js) như sau:

var firebase = require("firebase"); 

var myApp =firebase.initializeApp({ 
    serviceAccount: "xxx/xxx.json", 
    databaseURL: "https://xxx.firebaseio.com" 
}); 


firebase.database().ref().on('value', function(snapshot) { 
    console.log("urls value changed"); // NEVER GETS HERE 
    console.log(snapshot.val()); 
}); 

Cơ sở dữ liệu được tải với dữ liệu và điều này đang cố gắng nhìn vào thư mục gốc. Khi tôi thêm các mục vào cơ sở dữ liệu thông qua giao diện điều khiển, vẫn không có gì xảy ra. Các giá trị ref() cụ thể hơn không có hiệu lực.

Tôi đang sử dụng phiên bản nút v4.4.4. Chương trình được gọi tại dòng lệnh (trên MBP/OSX) với "node server.js".

Tôi đã dành hàng giờ cố gắng tìm ra những gì tôi đang làm sai - có thể là điều ngu ngốc! Nhờ sự giúp đỡ trước.

+0

Rất có thể chương trình của bạn chỉ đơn giản là thoát trước khi (không đồng bộ) 'on()' nhận giá trị từ máy chủ. Vì vậy, gọi lại của bạn không bao giờ được gọi. Xem ví dụ câu trả lời này về cách giữ cho quá trình còn sống: http://stackoverflow.com/questions/23622051/how-to-forcibly-keep-a-node-js-process-from-terminating –

+0

Tôi gặp vấn đề tương tự , Tôi cũng đã thử nghiệm bằng cách sử dụng dự án nhanh chóng của họ https://github.com/firebase/quickstart-nodejs/tree/master/database và vẫn không có may mắn. Tôi nghĩ rằng đó là một lỗi trên kết thúc của họ – garrettmac

+0

@FrankvanPuffelen: quá trình không bao giờ thoát - nó dường như đang chờ đợi sự kiện cơ sở dữ liệu, nhưng không bao giờ nhận được nó. – DavidG

Trả lời

8

Đã sửa lỗi!

  1. Added gỡ lỗi, đó là điều cần thiết:

    firebase.database.enableLogging(true)

  2. Saw rằng có một dấu hiệu không hợp lệ, và đã liên tục bị ngắt kết nối/kết nối lại để thử lại. Các dòng trong nhật ký như:

    p: 0: từ máy chủ: {"r": 2, "b": {"s": "invalid_token", "d": "Truy cập bị từ chối."}}

    (LƯU Ý: không cần đăng nhập, điều này hoàn toàn im lặng!).

  3. Hóa ra tài khoản dịch vụ không được thực hiện chính xác! Bạn phải ok điều khoản dịch vụ đầu tiên! Để thực hiện việc này: hãy truy cập https://console.cloud.google.com/

  4. Đã tạo lại một tài khoản dịch vụ mới và kết nối nó - và cuối cùng, nó hoạt động!

Các vấn đề liên quan