Typescript 如何在onCreate()Firebase Cloud代码侦听器中定义初始值?

Typescript 如何在onCreate()Firebase Cloud代码侦听器中定义初始值?,typescript,firebase,firebase-realtime-database,google-cloud-functions,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 fieldEnabledCreate

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

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;
    }
}
异步函数fieldEnabledCreated(快照:DataSnapshot,上下文:EventContext){ const deviceID=(context.params如有).deviceID; 试一试{ const deviceSnap=await(snap.ref.parent).once(“值”); const device:device=deviceSnap.val(); 如果(设备字段已启用){ //在球场上做些事情。 }否则{ var VALUEOFF字段=设备。字段已启用 log(`Value is-${valueoffield}`); } 返回承诺。解决(); }捕获(错误){ 投掷误差; } }
生成的日志表明该值是
未定义的
。在onCreate()调用中,字段的初始值如何可以是未定义的?如果它是被创建的,它不应该有一个值吗?只是想知道我是否遗漏了什么。

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

变量
deviceSnap
来自何处?哎呀,很抱歉。现在将解决这个问题,它应该是
fieldSnap
。谢谢@ConstantinBeer.我明白了!这是我能想到的最合乎逻辑的解释。谢谢你叫我进来!