我不明白为什么下面的代码会出现这个错误。
Typescript:类型“never”上不存在属性“size”
错误指向friendRef.size
。
它还在friendRef.update
上给出了一个错误:
属性“update”在类型“never”上不存在
如何在一个只返回1条或0条记录的集合上正确运行WHERE
子句查询,然后更新它的一些属性?
export const onRespondedToFriendRequest = functions.firestore
.document("users/{userDocID}/notifications/{notifID}")
.onUpdate(async (change, context) => {
const notifID = context.params.notifID;
const uid = context.params.userDocID; // user A
const beforeData = change.before.data();
const afterData = change.after.data();
const friendUID = afterData.uid; // user B (the friend)
// If notifID is "2" and moveOnToNextStep = true
if (notifID === "2" && afterData.moveOnToNextStep) {
const friendsQuerySnapshot = await fs
.collection("users/" + friendUID + "/friends")
.where("uid", "==", uid)
.limit(1)
.get();
let friendRef;
friendsQuerySnapshot.forEach((friendDoc) => {
friendRef = friendDoc.ref;
});
if (friendRef && friendRef.size !== 0) { // ERROR HERE
await friendRef.update({ // ERROR HERE
stat: "1",
modifiedDate: Math.floor((new Date).getTime()/1000).toString(),
});
}
}
});
2条答案
按热度按时间jmo0nnb31#
friendRef
的设置类型:a9wyjsp72#
你的代码没有处理没有结果的情况。在这种情况下,
friendRef
将是undefined
(它的默认值),你不能在上面调用size
或update
。最简单的修复方法是首先检查空结果,然后才有代码的其余部分:
在这一点上,你实际上也不再需要循环了,你可以这样做: