我正在使用Cloud Firestore存储聊天记录,我想按lastestMessage.created对其进行排序。我无法使用该查询,因为我将其用于其他用途,因此我正在使用SORT函数来进行查询。
我在VS Code上始终收到此错误:
属性'toDate'在类型'FieldValue |中不存在。时间戳”。
但是,代码可以正常运行,可以对其进行比较并正确返回。控制台中没有错误。
chats.sort(function (a, b) {
if (b.latestMessage.created && a.latestMessage.created) {
return b.latestMessage.created.toDate() - a.latestMessage.created.toDate();
}
});
(parameter) a: {
contractId?: string;
members: any;
contact: any;
latestMessage?: Message;
id?: string;
created?: firebase.firestore.FieldValue | firebase.firestore.Timestamp;
modified?: firebase.firestore.FieldValue | firebase.firestore.Timestamp;
}
令人讨厌的是,在我编译时此错误错误一直显示,并且可以完美运行...
答案 0 :(得分:1)
您的created
和modified
属性都被键入以接受s FieldValue或Timestamp类型的对象。我不清楚这是什么必要。由于编译器不知道它是哪一个,因此只能调用它们共有的方法,因此toDate不是值。
如果您希望它成为可以调用toDate的Timestamp类型,则必须从可能的类型中删除FieldValue或将值强制转换为Timestamp,这样编译器才能确切知道您认为要处理的内容