我需要下载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});
}
解决方法:最后我用一个布尔标志。
当您读取数据时,您似乎正在构建'> = 100'索引。是否有一个原因?您是否在编写数据时考虑构建索引?你有没有理由不能?这样做是相对直接的。 – cartant
如果您将观察者添加到包含乐谱的节点,它会在更新后通知您的应用。因此,当它通知您的应用程序时,检查它是否为100,如果是,请下载节点,将得分设为0并执行复制。如果这是一笔交易,您可以简单地让您的应用程序检查包含node/should_observe:true的首选项节点,并且只在观察分数节点(如果为真),如果为false,不添加观察者。然而,下载整个节点并写回它似乎是过度杀伤性的。你为什么这样做? – Jay
@Jay如果你看看我的res.render(),你会看到我正在传递整个帖子来显示下一页的信息。但一切都很好:我最终使用了一个布尔标志。今晚将发布我的代码。 – Coder1000