如何在onCreate()Firebase Cloud Code侦听器中取消定义初始值?

时间:2019-09-15 05:15:02

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

我确实有以下云代码函数声明:

export const fieldEnabledListener = functions.database.ref('devices/{deviceID}/fieldEnabled').onCreate((snap, context) => fieldEnabledCreated(snap, context));

这是TypeScript中fieldEnabledCreated函数的实现:

async function fieldEnabledCreated(snap: DataSnapshot, context: EventContext) {

    const deviceID = (context.params as any).deviceID;

    try {
        const deviceSnap = await (<admin.database.Reference>snap.ref.parent).once("value");
        const device: Device = deviceSnap.val();

        if (device.fieldEnabled) {
            // Do stuff with the field.
        } else {
            var valueOfTheField = device.fieldEnabled
            console.log(`Value is - ${valueOfTheField}`);
        }

        return Promise.resolve();

    } catch (error) {
        throw error;
    }
}

结果日志表明该值为undefined。如何在其onCreate()调用中将字段的初始值设为undefined?如果创建了它,它不应该带有值吗?只是想知道我是否想念任何东西。

1 个答案:

答案 0 :(得分:2)

snap将始终与刚创建的数据库中的快照一起提供。但是,如果稍后查询该值,则不能保证该值在附近。在我看来,在更新发生到函数执行之间,某些东西已经删除了数据库中的父位置(您可以预料到会有一些延迟,触发器不是立即发生的。)