为了账号安全,请及时绑定邮箱和手机立即绑定

多个集合的云函数触发器

多个集合的云函数触发器

大话西游666 2021-09-04 21:58:51
exports.myFunction = functions.firestore    .document('users/{userID}')    .onDelete((snap, context) => {        // do something    });我希望这个函数也为另一个集合触发,比如offices. 在不复制和粘贴整个内容的情况下执行此操作的最佳方法是什么?
查看完整描述

2 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

路径中的任何内容都可以是通配符,因此如果要在所有集合上触发:


exports.myFunction = functions.firestore

    .document('{collectionName}/{userID}')

    .onDelete((snap, context) => {

        // do something

    });

但是,无法设置在两个但并非所有集合上触发的单个路径。如果需要,只需通过在 aa(常规非云)函数中隔离该代码来最小化代码重复:


exports.myFunction = functions.firestore

    .document('users/{userID}')

    .onDelete((snap, context) => {

        doSomething(...)

    });

exports.myFunction = functions.firestore

    .document('offices/{officeID}')

    .onDelete((snap, context) => {

        doSomething(...)

    });

function doSomething(...) {

    ...

}


查看完整回答
反对 回复 2021-09-04
?
慕容森

TA贡献1853条经验 获得超18个赞

添加到另一个答案,您可以使用检查来执行通配符功能:


exports.myfunction = functions.firestore

    .document('{colId}/{docId}')

    .onWrite(async (change, context) => {


        const col = context.params.colId;

        const doc = context.params.docId;


        if (col === 'users' || col === 'offices') {


          return...


        }

        return null;

    });


查看完整回答
反对 回复 2021-09-04
  • 2 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信