我正在使用Firebase创建一个云函数来搜索"等候房间",因为我使用"limitToLast"只获取"房间"节点上的最后一个子节点,所以我必须循环浏览快照子节点,以获取我想要的房间的数据快照(我不知道是否有更好的方法,但以前效果很好(,问题是,在分配了"forEach"中的"waitingRoomData"后,我需要检查一些内容,但我收到一条消息说:"类型'never'上不存在属性"。我以前从未使用过打字,也不知道如何解决这个问题。
let waitingRoomData;
//Join waiting room.
waitingRoomsSnapshot.forEach(waitingRoom => {
waitingRoomData = waitingRoom;
});
if (waitingRoomData === undefined) {
return undefined;
} else {
if (waitingRoomData.child('hostId').val() == context.auth?.uid) {
//Uses an existing room where the current user is the host.
//Update creation time.
return waitingRoomData.child('creationTime').ref.set(admin.database.ServerValue.TIMESTAMP).then(() => {
return waitingRoomData.val();
}).catch(error => {
console.log(error);
return error;
});
} else {
return waitingRoomData.val();
}
}
您可能没有声明waitingRoomData的类型。[1]
尝试将其声明为:
let waitingRoomData:any[] = [];
否则,可能您的"else"语句之一永远不会被用作"if"始终为true,而编译器正在检测到这一点。
[1] Typescript:类型';上不存在属性;从不';,但功能有效吗?
[2] ';类型';上不存在属性;从不';