2013-11-02 8 views
0

Следующий код генерирует исключение внутреннего Dartium.Dart indexed_db put() error

<!DOCTYPE html> 

<html> 
<head> 
    <script type="application/dart"> 

    import 'dart:html'; 
    import 'dart:indexed_db'; 
    import 'dart:math'; 

    Random random = new Random(); 

    void main() { 
     window.indexedDB.open('myDB', version: 1, onUpgradeNeeded: _initDB).then((Database db) { 
     Transaction transaction = db.transaction('myStore', 'readwrite'); 
     ObjectStore objectStore = transaction.objectStore('myStore'); 
     Map data = { 
      'id': 'id' + random.nextInt(1000).toString(), 
      'name': 'name' + random.nextInt(1000).toString() 
     }; 
     objectStore.put(data); 
     }); 
    } 

    void _initDB(VersionChangeEvent e) { 
     (e.target as Request).result.createObjectStore('myStore'); 
    } 

    </script> 
    <script src="packages/browser/dart.js"></script> 
</head> 
</html> 

Я подал вопрос к http://www.dartbug.com/14256, но, возможно, что-то не так в моем коде?

+0

Можете ли вы предоставить дополнительную информацию об ошибке, которую вы получаете? –

+0

Да, вот он http://www.dartbug.com/14256 – Leksat

+0

Что это за объект? Я думаю, это будет проблемой. Вероятно, объект карты не может быть сериализован правильно. –

ответ

1

Указанная ошибка указывает на то, что это была ошибка, но сообщение об ошибке было теперь полезно. Он не должен сообщать более полезное сообщение:

Uncaught Error: DataError: The object store uses out-of-line keys and has no key generator and the key parameter was not provided.

0

Попробуйте следующее:

void _initDB(VersionChangeEvent e) { 
    (e.target as Request).result.createObjectStore('myStore', autoIncrement: true); 
} 

Но вам нужно будет удалить данные из вашего браузера в настройках для новой структуры на работу (или, возможно, увеличить номер версии db).