【发布时间】:2019-11-28 07:30:40
【问题描述】:
我正在尝试使 firebase sample code 工作:
// Listens for new log added to /log/:pushId/original and creates an
// uppercase version of the log to /log/:pushId/uppercase
exports.db_uppercaseLog=functions.database
.ref('/log/{pushId}/original')
.onCreate((snapshot)=>{
// Grab the current value of what was written to the Realtime Database.
const original = snapshot.val();
const uppercase = original.toUpperCase();
// Return a Promise
return snapshot.ref.parent.child('uppercase').set(uppercase);
});
如果我直接从index.js 部署,上面的代码可以运行。但它不会在 TypeScript 中编译。 TS lint 引发以下错误:
> functions@ build D:\Firebase\stax8\functions
> tsc
src/index.ts:94:10 - error TS2531: Object is possibly 'null'.
94 return snapshot.ref.parent.child('uppercase').set(uppercase);
~~~~~~~~~~~~~~~~~~~
Found 1 error.
试图通过隔离来解决问题,这会引发另一个问题:
if (snapshot.ref.parent){
return snapshot.ref.parent.child('uppercase').set(uppercase);
}
// > TS7030: Not all code paths return a value.
如何解决这个问题?是否可能出现 null 父级的情况?
【问题讨论】:
标签: typescript firebase google-cloud-functions