【问题标题】:Firebase functions multi child changeFirebase 功能多子更改
【发布时间】:2021-07-30 05:01:41
【问题描述】:

嗨,firebase 函数我想更改多个孩子,但不能更改用户 ID 下的所有孩子。你能帮我解决这个问题吗

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

var database = admin.database();

exports.newNodeDetected = functions.database.ref('system/{userId}/value')
.onWrite((Change) =>{
    var oldDeger = Change.before.val();
    var newDeger = Change.after.val();
    


    if (newDeger === '0'){  
     database.ref(`system/${userId}/value`).set('1');    
    }
})

enter image description here

【问题讨论】:

  • 为什么不能更改多个孩子?是什么阻止你这样做?

标签: node.js firebase firebase-realtime-database google-cloud-functions


【解决方案1】:

您可以使用标准对象操作和直接写入以多种方式更新多个孩子,如您的问题所示。 在更新多个字段时,您可能有兴趣使用update 而不是set

您还会注意到我添加了一个Context 字段,它允许您从参考路径和其他信息中访问用户ID 等信息:Source

exports.newNodeDetected = functions.database.ref('system/{userId}/value')
.onWrite((Change, Context) =>{
    var oldDeger = Change.before.val();
    var newDeger = Change.after.val();
    


    if (newDeger === '0'){  
     database.ref(`system/${Context.params.userId}/value`).set('1'); 
     database.ref(`system/${Context.params.userId}/otherField`).update({another:field});
    }
})

资源:Medium Article: Realtime Set Vs Update

【讨论】:

  • 感谢您的回答,我还有一个问题。我怎样才能把这个功能放在定时触发器中。我正在学习新的节点 js。 export.scheduledFunction = functions.pubsub.schedule('每 3 分钟').onRun((context) => { return null; });
  • 你当然可以,你只需要确保逻辑可以根据需要搜索和识别文档。如果您的应用规模扩大,这两种解决方案都有效,并且对计费产生不同的影响。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-29
  • 2019-05-27
  • 1970-01-01
相关资源
最近更新 更多