Safari for IOS上的日期在保存/加载期间转换为字符串
Chrome for Mac
(obj.date = new Date())
的对象保存到PouchDB数据库typeof obj.date === object
(这是一个合适的日期)适用于iOS的Safari
(obj.date = new Date())
的对象保存到PouchDB数据库typeof obj.date === string
所以,在Chrome中我得到的类型是持久的,而不是在Safari上。问题是在<input type="date">
中使用此字段时 - 在Chrome上运行但在Safari上没有。
小提琴: http://jsfiddle.net/yoorek/v5fcw/
这是正常的吗?还是一个Bug?我应该手动将字符串转换为日期(丑陋,我认为; s PouchDB角色)
答案 0 :(得分:1)
我在GitHub上回复了,但为了StackOverflow上的人们的利益,这里有链接:https://github.com/pouchdb/pouchdb/issues/2351
修改:澄清而不只是链接到GitHub问题......
PouchDB
以CouchDB
为模型,它需要JSON对象,而不是任意JavaScript对象。
在我们的所有后端(IndexedDB
,WebSQL
,LevelDB
和CouchDB
)中,IndexedDB实际上是奇怪的,因为它能够存储的不仅仅是您使用JSON.parse(JSON.stringify(myDoc))
获得的内容。
然而,这里存在一个真正的错误,即IndexedDB与WebSQL的行为有所不同,我已经开通了一个公关来解决这个问题:https://github.com/pouchdb/pouchdb/pull/2353。
确实,IndexedDB应该在存储它们之前将日期转换为字符串,因此您不会在不同的后端看到不一致的行为。
答案 1 :(得分:0)
请参阅this issue,但简短的回答是IndexedDB
(chrome中的后端)可以处理日期对象,但WebSQL
(在safari中使用)不能。{/ p>