尝试添加一个简单的触发器,以便每当写入表时将时间戳写入另一个表。问题是数据来自一个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}上触发 还是插入?
答案 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(
这有望解决它。