我在下面的link中使用firesotre的以下示例。但是,对于data.name中的数据,错误对象可能是'undefined'。我很确定我在文件中有名字。我该如何解决这个问题。
// Listen for updates to any `user` document.
exports.countNameChanges = functions.firestore
.document('users/{userId}')
.onUpdate((change, context) => {
// Retrieve the current and previous value
const data = change.after.data();
const previousData = change.before.data();
// We'll only update if the name has changed.
// This is crucial to prevent infinite loops.
if (data.name == previousData.name) return null;
// Retrieve the current count of name changes
let count = data.name_change_count;
if (!count) {
count = 0;
}
// Then return a promise of a set operation to update the count
return change.after.ref.set({
name_change_count: count + 1
}, {merge: true});
});
答案 0 :(得分:0)
如果查看change.after.data()
的TypeScript定义,您将看到data方法被声明为返回undefined或object。由于它可能返回未定义,因此当TypeScript处于严格模式时,您需要检查该情况,然后才能开始访问它的属性或方法。即使您绝对确定文档将具有指定的属性,也必须这样做。
您可以禁用严格模式(我不建议这样做-严格模式可以防止编程错误),也可以在开始使用它们之前先检查data
和previousData
。
const data = change.after.data();
const previousData = change.before.data();
if (data && previousData) {
// do stuff with them
}