【发布时间】:2017-11-17 23:05:30
【问题描述】:
我设置了多个触发器,比如:
exports.doSomething = functions.firestore.document('col/{doc}').onCreate(event => {})
比我有一个我想在部署时立即运行的功能。看起来像这样:
now()
function now(){
console.log("running function")
}
我在我的日志中得到了这个:
为什么它运行了这么多次并被其他函数调用?
完整代码,刚刚测试过,运行函数被调用了 4 次,与我设置的触发器数量相同:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const db = admin.firestore()
var geoip = require('geoip-lite');
exports.z = functions.firestore.document('converasdassdtIP/{UID}').onCreate(event => { })
exports.x = functions.firestore.document('sads/{UID}').onCreate(event => { })
exports.n = functions.firestore.document('asdasasdsa/{UID}').onCreate(event => { })
exports.m = functions.firestore.document('converasdasddtIP/{UID}').onCreate(event => { })
now()
function now(){
console.log("running function")
}
【问题讨论】:
-
您在代码中的哪个位置调用
now()?您可以将您的一些functions/index.js添加到问题中吗? -
@Callam 查看我的编辑
-
每次触发函数时都会调用您对
now()的调用,因为它位于index.js文件的根范围内,因此每个运行的云函数都会看到此日志。你想用这个日志实现什么?您希望它何时打印? -
@Callam O,我对 javascript 非常不熟悉。假设我想在每次将某些东西部署到 Firebase 时进行一次设置,我应该怎么做/怎么做?我希望函数 now() 只运行一次。
-
你什么时候只在部署时运行它?您要部署什么,所有功能,还是仅部署一个特定功能?
标签: javascript firebase google-cloud-functions