1

IOS の Safari の日付は、保存/読み込み中に文字列に変換されます

Mac 用 Chrome

  1. 日付フィールド(obj.date = new Date())を持つオブジェクトを PouchDB データベースに保存する
  2. 同じオブジェクトを読み取ります - typeof obj.date === object(そしてそれは適切な日付です)

iOS用サファリ

  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の問題にリンクするだけでなく、明確にするために...

PouchDBCouchDBは、任意の JavaScript オブジェクトではなく、JSON オブジェクトを想定する をモデルにしています。

すべてのバックエンド ( IndexedDBWebSQLLevelDB、およびCouchDB) の中で、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(クロムのバックエンド) は日付オブジェクトを処理できますが、WebSQL(サファリで使用される) できないということです。

于 2014-06-12T09:55:31.397 に答える