Javascript 当保存到indexeddb时,Dexie能尊重js类getter/setter吗?

Javascript 当保存到indexeddb时,Dexie能尊重js类getter/setter吗?,javascript,class,indexeddb,dexie,Javascript,Class,Indexeddb,Dexie,当与Dexie/Indexeddb交互时,我以JS类的形式传递数据。这些类上的一些属性是通过getter/setter处理的,这样我就有机会在存储到对象上之前操作数据 Dexie正在使用数据库初始化期间定义的列名将内部属性名(\u当时)保存到db“原样”,而不是通过其getter(当时)读取数据: 计划:“++id,contactId,when,早晚”, 如何指示Dexie使用类getter,而不是直接使用对象属性 您可能会在本文中看到我正在处理的代码/问题。IndexedDB将存储并允许所有

当与Dexie/Indexeddb交互时,我以JS类的形式传递数据。这些类上的一些属性是通过getter/setter处理的,这样我就有机会在存储到对象上之前操作数据

Dexie正在使用数据库初始化期间定义的列名将内部属性名(
\u当
时)保存到db“原样”,而不是通过其getter(
时)读取数据:

计划:“++id,contactId,when,早晚”,

如何指示Dexie使用类getter,而不是直接使用对象属性

您可能会在本文中看到我正在处理的代码/问题。

IndexedDB将存储并允许所有基于原型的属性。类getter和setter是基于原型的,所以IndexedDB不会使用它们。为了解决这个问题,您需要在放置实体时通过一个函数映射实体,并在返回实体之前使用另一个函数映射它们

然而,我认为内部属性通常是您想要存储的,原因与它们存储在内存中的原因相同。在您的例子中,_when包含带有零超时的日期对象。如果时区发生变化,这将很容易成为另一个日期,因此最好将其存储为日期字符串,并将该内部格式也作为存储在indexedDB中的格式。

indexedDB将存储并保留所有基于原型的属性。类getter和setter是基于原型的,所以IndexedDB不会使用它们。为了解决这个问题,您需要在放置实体时通过一个函数映射实体,并在返回实体之前使用另一个函数映射它们


然而,我认为内部属性通常是您想要存储的,原因与它们存储在内存中的原因相同。在您的例子中,_when包含带有零超时的日期对象。如果时区发生变化,这将很容易成为另一个日期,因此最好将其存储为日期字符串,并将该内部格式也作为存储在indexedDB中的格式。

非常感谢您的建议!我将探讨你的建议,看看如何在之间更自由地使用
,而不是试图不必要地将日期对象正常化。非常感谢你的建议!我将探讨您的建议,看看如何更自由地在
之间使用
,而不是试图让自己不必要地正常化日期对象。