云功能测试-从终端在非单一数据上本地调用实时数据库

时间:2019-01-07 01:33:31

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

我的实时数据库中有一个结构如下的节点:

enter image description here

在我的打字稿文件中(使用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 blogdocumentation,但是找不到我要尝试做的事情。

0 个答案:

没有答案