2015-10-25 11 views
5

Tôi đang nghĩ đến việc tạo thư viện máy khách JavaScript của riêng mình và tôi thích cách các yêu cầu định dạng Firebase. Tôi đang cố gắng hiểu những gì đang xảy ra. Từ cách nhìn vào hướng dẫn web here tôi thấy đoạn code dưới đây:Cấu trúc và mẫu thư viện khách hàng của Mimic Firebase

var ref = new Firebase("https://docs-examples.firebaseio.com/web/saving-data/fireblog"); 

var usersRef = ref.child("users"); 

usersRef.set({ 

    alanisawesome: { 
     date_of_birth: "June 23, 1912", 
     full_name: "Alan Turing" 
    }, 

    gracehop: { 
     date_of_birth: "December 9, 1906", 
     full_name: "Grace Hopper" 
    } 

}); 

Tôi có thể thấy rằng ref bằng một chức năng gọi là Firebase, và usersRef bằng ref.child.

Tôi đang tưởng tượng một cái gì đó như thế này:

Firebase = function(url) { 
    this.child = function(path) { 

    console.log(url); 
    console.log(path); 

}; 
}; 

Ở đây tôi có thể thấy rằng usersRef.set đang được gọi nhưng tôi không thể tìm ra cách hoặc nơi này sẽ đi đâu? Có phải set một chức năng hoặc một đối tượng không? Tôi nhận thấy firebase có set(), update(), push()transaction(), khiến tôi nghĩ đây là những chức năng.

"TypeError: Cannot read property 'set' of undefined 

Có thể tôi đang đi sai đường hoàn toàn, tôi không quen với mẫu này.

+1

@Drenmi cảm ơn bạn đã chỉnh sửa đó, nó trông giống và đọc tốt hơn nhiều. – Bill

+0

'child()' chỉ cần trả về một đối tượng với phương thức 'set' /' update' /…, giống như 'new Firebase' trả về một đối tượng với phương thức' child'. – Bergi

+0

@Bergi cảm ơn bạn đã trả lời, tôi không thể thu hút đầu đề xuất của bạn, bạn có thể giúp thêm bằng cách mở rộng dự đoán tốt nhất của tôi cho đến nay không. – Bill

Trả lời

1

Nếu bạn kiểm tra API Firebase, bạn sẽ thấy rằng child() trả về tham chiếu Firebase mới cho vị trí con. Vì vậy, một cái gì đó như thế này:

var Firebase = function(url) { 

    console.log(url); 

    this.child = function(path) { 
     return new Firebase(url+'/'+path); 
    }; 

    this.set = function(object) { 
     console.log(object); 
    }; 

}; 

Tôi đã cập nhật bạn jsbin: https://jsbin.com/nucume/2/edit?js,console

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