状况:
我需要下载childNode,然后将()设置为另一个节点。
问题是我只想在childNode的得分属性达到100后才这样做。
我应该在何时何地检查帖子的分数是否为100或更高,以及如何仅将其复制到新索引一次?
我的想法:
加载帖子后,请检查其分数。如果它是> = 100,请检查数据库是否是这种情况。然后将节点推送到新索引。
问题:
每次加载帖子时,如何阻止节点上传,因为多次加载时得分>> 100?我只需要它发生一次!
解决方案代码:
if (funPost.score >= global.hotNumber && funPost.hot == false) {
var hotPostRef = firebase.database().ref("hot/section/"+key);
var hotPost = {
title: funPost.title,
image: funPost.image,
id: funPost.id,
key: funPost.key
}
hotPostRef.set(hotPost);
funPostRef.update({"hot": true});
}
else if (funPost.score <= (global.hotNumber - 25) && funPost.hot == true) {
var hotPostRef = firebase.database().ref("hot/section/"+key);
hotPostRef.remove();
funPostRef.update({"hot": false});
}
解决方案:我最终使用了布尔标志。
答案 0 :(得分:1)
我最后用布尔标志做了:
if (funPost.score >= global.hotNumber && funPost.hot == false) {
var hotPostRef = firebase.database().ref("hot/section/"+key);
var hotPost = {
title: funPost.title,
image: funPost.image,
id: funPost.id,
key: funPost.key
}
hotPostRef.set(hotPost);
funPostRef.update({"hot": true});
}
else if (funPost.score <= (global.hotNumber - 25) && funPost.hot == true) {
var hotPostRef = firebase.database().ref("hot/section/"+key);
hotPostRef.remove();
funPostRef.update({"hot": false});
}
答案 1 :(得分:0)
尝试使用.once()
.on()
。
ref.once('value')
.then(function(dataSnapshot) {
// handle read data.
});
答案 2 :(得分:-1)
https://gist.github.com/katowulf/6099042 你是如何复制或移动ref到另一个参考。
每次帖子发布时,如何阻止节点上传 加载,因为它的分数在多次加载时>> 100?我需要它 只发生一次!
1)如果路径键已经存在()在新位置,则使用bolt规则使写入失败。
2)导致分数上升的原因是什么?例如调查完成,考试完成 应将这些事件发送到firebase队列,该队列可以运行一系列管道来更新您需要的任何内容。