18

[email protected]căn cứ hỏa lực cơ sở dữ liệu thời gian thực 3.3 bị mắc kẹt để "Làm một nỗ lực kết nối" với Phản ứng Native 0,32

phản ứng bản địa v0.32 thử nghiệm trên thiết bị Android với wifi

cơ sở dữ liệu căn cứ hỏa lực không có bất kỳ quy tắc xác thực nào, nó mở và đọc.

Với cơ cấu sau file:

|_ firebase.js 
|_ actions.js 

này không hoạt động:

firebase.js

import firebase from 'firebase' 

const config = { 
    apiKey: "*****", 
    authDomain: "****", 
    databaseURL: "*****", 
    storageBucket: "*****", 
} 

firebase.database.enableLogging(true); 

export default firebase.initializeApp(config) 

actions.js

import firebase from './firebase' 

export const fetchData =() => { 
    const Data = firebase.database().ref('some/data') 
    Data.on('value', (snapshot) => { 
     console.log("snapshot", snapshot.val()) // never printed 
    }, (error) => { 
     console.error(error) 
    }) 
} 

kết xuất debug

p:0: Browser went online. 
firebase-database.js:36 p:0: Listen called for /some/data default 
firebase-database.js:36 p:0: Making a connection attempt 

Không có gì khác ...


làm việc này (nhưng nó không phải là một giải pháp):

firebase.js

...same content as above... 

export default() => firebase.initializeApp(config) // we export a function instead to trigger the initialization when the app is ready 

actions.js

...same content as above... 
const Data = firebase().database().ref('some/data') // we "manually" trigger the initialization, it's obviously not a good solution since we can't initialize the app multiple times 

đầu ra

p:0: Browser went online. 
firebase-database.js:36 p:0: Listen called for /some/data default 
firebase-database.js:36 p:0: Making a connection attempt 
firebase-database.js:36 p:0: Auth token refreshed 
firebase-database.js:36 getToken() completed. Creating connection. 
firebase-database.js:36 c:0:0: Connection created 

Tôi đang làm gì sai ở đây? Tôi cũng nhận thấy rằng một khi tôi import firebase from 'firebase', biến firebase có sẵn trên toàn cầu trong tất cả các file mà KHÔNG phải là firebase var từ báo cáo kết quả nhập khẩu (tôi có thể viết import FooBar from 'firebase', các firebase var toàn cầu vẫn nhập khẩu)

+0

Các bạn đã thử tắt chế độ kiểm tra sửa lỗi? Tôi đã có vấn đề tương tự nhưng nó chỉ xảy ra trong chế độ gỡ lỗi. – Xeijp

+0

Tôi thực sự đã bật chế độ gỡ lỗi vì không có gì xảy ra, vì vậy rất tiếc là không phải vậy. – Pcriulan

+2

Bạn không làm bất cứ điều gì sai, một cái gì đó bị hỏng giữa firebase mới nhất và phản ứng bản địa (điều này có thể là bình thường nhưng nó không có vẻ tài liệu bất cứ nơi nào). Đã làm việc cho tôi với "firebase": "^ 3.1.0", "phản hồi": "15.2.1", "phản ứng gốc": "^ 0.29.0". –

Trả lời

1

Vì không ai dường như để có câu trả lời "chính thức". Dưới đây là cách giải quyết tôi đến với để cung cấp một số loại khởi tạo lười biếng:

firebase.js

import Firebase from 'firebase' 

let _database = null 

const initFirebase =() => { 
    var config = { 
     apiKey: "*************", 
     authDomain: "************", 
     databaseURL: "**********", 
     storageBucket: "************", 
    } 

    Firebase.database.enableLogging(true) 
    Firebase.initializeApp(config) 
} 

export const getDatabase =() => { 
    if (!_database) { 
     initFirebase() 
     _database = Firebase.database() 
    } 
    return _database 
} 

Sau đó, bất cứ nơi nào bạn cần database:

import { getDatabase } from './firebase' 

const methodThatNeedDatabase =() => { 
    getDatabase().ref('/some/ref') 
    ... 
} 
Các vấn đề liên quan