我确实有以下云代码函数声明:
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
?如果创建了它,它不应该带有值吗?只是想知道我是否想念任何东西。
答案 0 :(得分:2)
snap
将始终与刚创建的数据库中的快照一起提供。但是,如果稍后查询该值,则不能保证该值在附近。在我看来,在更新发生到函数执行之间,某些东西已经删除了数据库中的父位置(您可以预料到会有一些延迟,触发器不是立即发生的。)