Ada*_*dam 4 javascript firebase
我感兴趣地阅读了这里的博客文章,其中描述了如何使查询等效于sqlWHERE email = x
new Firebase("https://examples-sql-queries.firebaseio.com/user")
.startAt('kato@firebase.com')
.endAt('kato@firebase.com')
.once('value', function(snap) {
console.log('accounts matching email address', snap.val())
});
Run Code Online (Sandbox Code Playgroud)
我试图复制如下:
root
|-rewards
|--JAJoFho0MYBMGNGrCdc
|-name: "apple"
|--JAJoFj7KsLSXMdGZ77V
|-name: "orange"
|--JAJoFp7HP6Ajq-VuMMx
|-name: "banana"
Run Code Online (Sandbox Code Playgroud)
每个奖励对象中还有许多其他字段......但我想按名称索引对象,并能够查询所有这些对象以找到与给定名称匹配的对象.博客文章指示我们使用setPriority()来实现这一目标.
我尝试过以下方法:
var ref = new Firebase('https://<example>.firebaseio.com/rewards').push({
name: 'apple',
otherKey: 'somevalue',
...
});
ref.setPriority('apple');
Run Code Online (Sandbox Code Playgroud)
如果我然后查询firebase,它返回null:
new Firebase('https://<example>.firebaseio.com/rewards')
.startAt('apple')
.endAt('apple')
.once('value', function(snap) {
console.log('found:', snap.val()); // logs: "found null"
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
看起来你正试图同步运行这些命令.在您申请奖励时,可能还没有任何数据(您的推送操作可能尚未完成).
接下来,您应该使用setWithPriority,它允许您同时推送数据和优先级.
最后但同样重要的是,您没有提到错误.我假设你检查过那些像勤奋的开发者那样.除了JS控制台之外,您还可以记录回调函数的结果(对于您调用的每个方法都有一个,如果出现问题,可能会返回错误).
总而言之,它应该看起来更像这样:
var ref = new Firebase('https://<example>.firebaseio.com/rewards').push();
ref.setWithPriority({
name: 'apple',
otherKey: 'somevalue',
...
}, 'apple', function(err) {
if( error ) { console.error(err); }
else {
fetchValue();
}
});
function fetchValue() {
// wait for the set to complete before fetching data
new Firebase('https://<example>.firebaseio.com/rewards')
.startAt('apple')
.endAt('apple')
.once('value', function(snap) {
console.log('found:', snap.val()); // logs: "found null"
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1229 次 |
| 最近记录: |