gpt4 book ai didi

javascript - 在 Firebase 中使用字符串作为优先级

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:24:55 24 4
gpt4 key购买 nike

我感兴趣地阅读了博文 here ,它描述了如何进行等价于 sql WHERE 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())
});

我试过如下复制:

root
|-rewards
|--JAJoFho0MYBMGNGrCdc
|-name: "apple"
|--JAJoFj7KsLSXMdGZ77V
|-name: "orange"
|--JAJoFp7HP6Ajq-VuMMx
|-name: "banana"

每个奖励对象中还有许多其他字段...但我想按名称索引对象并能够查询所有这些对象以找到与给定名称匹配的对象。博客文章指导我们使用 setPriority() 来实现这一点。

我尝试了以下方法:

var ref = new Firebase('https://<example>.firebaseio.com/rewards').push({
name: 'apple',
otherKey: 'somevalue',
...
});

ref.setPriority('apple');

如果我随后查询 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"
});

我做错了什么?

最佳答案

看起来您正在尝试同步运行这些命令。在您请求奖励时,可能还没有任何数据(您的推送操作可能尚未完成)。

接下来,您应该使用 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"
});
}

关于javascript - 在 Firebase 中使用字符串作为优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20461531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com