Firebase数据库功能规则

时间:2018-07-09 17:04:54

标签: android firebase firebase-realtime-database google-cloud-functions

尝试添加一个简单的触发器,以便每当写入表时将时间戳写入另一个表。问题是数据来自一个Json对象数组的JSON文件。比这更复杂,但这是伪数据。

category 
   - 0 
       - name: "Name0"
       - dsiplayname: "Name of Obj 0"
   - 1
       - name: "Name1"
       - dsiplayname: "Name of Obj 1"

我写的函数是这个

'use strict';
const admin = require('firebase-admin');
admin.initializeApp();

exports.touch = functions.database.ref('/{category}').onWrite(
    (change, context) => admin.database().ref('/category_date').set(context.timestamp));

如果我使用它,那么一次写入将触发时间戳数百次。因此,我该如何编写以在Edit / category / [any array item] / {any column}上触发 还是插入?

1 个答案:

答案 0 :(得分:2)

您似乎在数据库触发器中犯了一个简单的错误,导致对 any 写入 any 表(包括您的/category_date表)进行触发...触发该函数,导致对/category_date表的另一次写......再次触发该函数,并导致对/category_date表的另一次写...,其触发(等。 。

此代码:

functions.database.ref('/{category}').onWrite(

将针对 ALL 条路径触发,因为您将category一词作为{parameter},而不是完全匹配。更改为:

functions.database.ref('/category/{category_index}').onWrite(

甚至只是:

functions.database.ref('/category').onWrite(

这有望解决它。