我的实时数据库中有一个结构如下的节点:
在我的打字稿文件中(使用VS代码),我有一个函数,当其中一个子节点从节点users
删除时被触发,并计算删除后剩余的子节点数:>
const admin = require('firebase-admin');
const functions = require('firebase-functions');
try {admin.initializeApp(functions.config().firebase);} catch(e) {console.log(e);}
// MIN AMOUNT OF USERS
const MIN_USERS_COUNT = 2;
// Callback triggered when event in users node is deleted from the realtime database
exports = module.exports = functions.database.ref('users').onDelete((change, context) => {
console.log(`number of children is ${change.numChildren()}`)
if (change.numChildren() >= MIN_USERS_COUNT) {
// DO some work ...
}
})
如果我将功能部署到服务器,然后从实时数据库中的节点users
删除用户,则该功能已正确触发,并且能够在Firebase仪表板上看到日志输出。
日志显示:子代数为5(例如)。
上面的测试的问题是,我必须部署到prod,然后手动删除节点(这很耗时)。
我考虑过做同样的事情,但是为了节省时间自己在本地做。
因此,如果我尝试使用类似myDatabaseFunction之类的东西,该如何在部署firebase functions:shell
之前在终端myDatabaseFunction('DwpA5K4XM4ZjdYGaXUOLHEhC3Kr2, ET4q5SX0WccCESNaU61djdqnt0i1, StUsv09jDbXOCVCaCSstq7RtQbq2', {params: {group: 'a', id: 123}})
上模拟我的函数事件的触发器?
到目前为止,我已经尝试过了,但是没有用:
// Connect to mongoDB
mongoose.connect('mongodb://localhost/[yourDbName]',{useNewUrlParser:true})
.then(function(){
console.log('mongoDB connected');
})
.catch(function(){
console.log('Error :');
})
我调查了this blog和documentation,但是找不到我要尝试做的事情。