模仿 Firebase 客户端库的结构和模式
Mimic Firebase client library's structure and patterns
我正在考虑制作自己的 JavaScript 客户端库,我喜欢 Firebase 格式化请求的方式。我试图了解发生了什么。通过查看网络指南 here 我发现了以下代码:
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"
}
});
我可以看到 ref
等于一个名为 Firebase
的函数,并且 usersRef
等于 ref.child
。
我正在想象这样的事情:
Firebase = function(url) {
this.child = function(path) {
console.log(url);
console.log(path);
};
};
在这里我可以看到 usersRef.set
正在被调用,但我不知道它会怎样或去哪里? set
是函数还是对象?我注意到 firebase 有 set()
、update()
、push()
和 transaction()
,让我觉得这些是函数。
"TypeError: Cannot read property 'set' of undefined
也许我完全走错了路,我只是不熟悉这种模式。
如果您检查 Firebase API,您将看到 child()
returns 对子位置的新 Firebase 引用。所以像这样:
var Firebase = function(url) {
console.log(url);
this.child = function(path) {
return new Firebase(url+'/'+path);
};
this.set = function(object) {
console.log(object);
};
};
我已经更新了你的 jsbin:https://jsbin.com/nucume/2/edit?js,console
我正在考虑制作自己的 JavaScript 客户端库,我喜欢 Firebase 格式化请求的方式。我试图了解发生了什么。通过查看网络指南 here 我发现了以下代码:
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"
}
});
我可以看到 ref
等于一个名为 Firebase
的函数,并且 usersRef
等于 ref.child
。
我正在想象这样的事情:
Firebase = function(url) {
this.child = function(path) {
console.log(url);
console.log(path);
};
};
在这里我可以看到 usersRef.set
正在被调用,但我不知道它会怎样或去哪里? set
是函数还是对象?我注意到 firebase 有 set()
、update()
、push()
和 transaction()
,让我觉得这些是函数。
"TypeError: Cannot read property 'set' of undefined
也许我完全走错了路,我只是不熟悉这种模式。
如果您检查 Firebase API,您将看到 child()
returns 对子位置的新 Firebase 引用。所以像这样:
var Firebase = function(url) {
console.log(url);
this.child = function(path) {
return new Firebase(url+'/'+path);
};
this.set = function(object) {
console.log(object);
};
};
我已经更新了你的 jsbin:https://jsbin.com/nucume/2/edit?js,console