如何将childNode从一个节点复制到另一个节点?

时间:2016-12-30 19:38:40

标签: javascript node.js firebase firebase-realtime-database

状况:

我需要下载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});
   }

解决方案:我最终使用了布尔标志。

3 个答案:

答案 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队列,该队列可以运行一系列管道来更新您需要的任何内容。