3

.add を使用して objectStore にオブジェクトを追加しようとすると、コンソールに次のエラーが表示されます: DataError: 操作に提供されたデータが要件を満たしていません。誰かがこのエラーの原因を特定できれば、本当に助かります。これはコードです:

var request = objStore.add({tarea: todo, clase: "pendiente"});

var db;

function create_to_do(){
  var todo = document.querySelector('#the-do').value;
  var transaction = db.transaction("to_do", "readwrite");
  transaction.oncomplete = function(eve){
    console.log("all done¡")
  }

  transaction.onerror= function(eve){
    console.log("something went wrong: "+ eve.target.errorCode);
  }; 

  var objStore = transaction.objectStore("to_do");
  var request = objStore.add({tarea: todo, clase: "pendiente"});
  request.onsuccess = function(eve){
    console.log("all done¡");
    console.log(eve.target.result);
  };
}

function indexDB(){
  var request = indexedDB.open('todos', 1);
    request.onsuccess = function (evt) {     
    db = this.result;
    console.log("Database Opened");
  };

  request.onerror = function (evt){
    console.log("OpenDB error: " + evt.target.errorCode);
  };

  request.onupgradeneeded = function(evt){
    store = evt.currentTarget.result.createObjectStore("to_do", 
              {keyPath: 'id', autoIncrement: true});
    store.createIndex('clase', 'clase', {unique: false});
    console.log("index created");
  };
}
4

3 に答える 3

4

試してみるkeyPath: 'keyPath'autoIncrement: false、「主キー」を指定したら、autoIncrement を false に設定する必要があります。こちらを参照してください。

于 2013-02-23T08:39:51.327 に答える
3

DOM オブジェクトを保存しようとしています。そこにあるものに応じて、データを保存できる場合とできない場合があります。tarea プロパティをオブジェクトから除外して保存してみてください。tarrea プロパティの内容を教えてください

var todo = document.querySelector('#the-do').value;
var request = objStore.add({tarea: todo, clase: "pendiente"});
于 2013-02-25T12:57:11.280 に答える
0

単純なタイプミスです。メソッドの自動インクリメントオプションは、スペルではなく(大文字のIを使用して)createObjectStore()スペルする必要があります。autoIncrementautoincrement

オブジェクトストアはキージェネレータなしで作成されるため、オブジェクトを追加すると、idキーパスに従ってプロパティが検索されます。プロパティが存在しないため、を取得しDataErrorます。

于 2013-02-22T16:36:06.507 に答える