1

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

适用于 Mac 的 Chrome

  1. 将带有日期字段的对象保存(obj.date = new Date())到 PouchDB 数据库
  2. 读取相同的对象 - typeof obj.date === object(这是一个正确的日期)

适用于 iOS 的 Safari

  1. 将带有日期字段的对象保存(obj.date = new Date())到 PouchDB 数据库
  2. 读取相同的对象 -typeof obj.date === string

因此,在 Chrome 中,我得到了持久化类型,而在 Safari 上则没有。问题是在使用此字段时<input type="date">- 适用于 chrome 但不适用于 Safari。

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

正常吗?还是虫子?我应该手动将字符串转换为日期吗(丑陋,我认为它是 PouchDB 角色)

4

2 回答 2

1

我在 GitHub 上做出了回应,但为了让 StackOverflow 上的人们受益,这里是链接:https ://github.com/pouchdb/pouchdb/issues/2351

编辑:澄清而不仅仅是链接到GitHub问题......

PouchDB在 之后建模CouchDB,它需要 JSON 对象,而不是任意 JavaScript 对象。

在我们所有的后端(IndexedDBWebSQLLevelDBCouchDB)中,IndexedDB 实际上是奇怪的,因为它能够存储的不仅仅是您使用JSON.parse(JSON.stringify(myDoc)).

然而,这里有一个真正的错误,即 IndexedDB 的行为与 WebSQL 不同,我已经打开了一个 PR 来解决这个问题:https ://github.com/pouchdb/pouchdb/pull/2353 。

真正的 IndexedDB 应该在存储日期之前将它们转换为字符串,这样您就不会在不同的后端看到不一致的行为。

于 2014-06-05T17:26:36.337 回答
0

请参阅此问题,但简短的回答是IndexedDB(chrome 中的后端)可以处理日期对象,但WebSQL(在 safari 中使用)不能。

于 2014-06-12T09:55:31.397 回答