iOS Safari上保存/加载期间的PouchDB日期/字符串转换

时间:2014-06-05 11:09:08

标签: indexeddb pouchdb web-sql

Safari for IOS上的日期在保存/加载期间转换为字符串

Chrome for Mac

  1. 将包含日期字段(obj.date = new Date())的对象保存到PouchDB数据库
  2. 阅读同一个对象 - typeof obj.date === object(这是一个合适的日期)
  3. 适用于iOS的Safari

    1. 将包含日期字段(obj.date = new Date())的对象保存到PouchDB数据库
    2. 阅读同一个对象 - typeof obj.date === string
    3. 所以,在Chrome中我得到的类型是持久的,而不是在Safari上。问题是在<input type="date">中使用此字段时 - 在Chrome上运行但在Safari上没有。

      小提琴: http://jsfiddle.net/yoorek/v5fcw/

      这是正常的吗?还是一个Bug?我应该手动将字符串转换为日期(丑陋,我认为; s PouchDB角色)

2 个答案:

答案 0 :(得分:1)

我在GitHub上回复了,但为了StackOverflow上的人们的利益,这里有链接:https://github.com/pouchdb/pouchdb/issues/2351

修改:澄清而不只是链接到GitHub问题......

PouchDBCouchDB为模型,它需要JSON对象,而不是任意JavaScript对象。

在我们的所有后端(IndexedDBWebSQLLevelDBCouchDB)中,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>