2016-09-22 11 views
1

IndexDBで2つのオブジェクトを開き、入力値からデータを取得しようとすると、上記のエラーが発生します。Uncaught TypeError:nullopenRequest.onupgradeneededのプロパティ 'value'を読み取ることができませんIndexeddb

openRequest.onupgradeneeded = function(e) {   

    var thisDB = e.target.result; 

    var tab1Create = thisDB.createObjectStore("users", {keyPath: "phone"}); 

var tab2Create = thisDB.createObjectStore("Friends", {keyPath: "frdphone"}); 

    db = e.target.result; 

var transaction = e.target.transaction; 
var phone = document.querySelector("#phone").value;   
var email = document.querySelector("#email").value; 
var frdphone = document.querySelector("#frdphone").value; 

var frdname = document.querySelector('#frdname').value;  

var friend = transaction.objectStore('Friends'); 
friend.add({ 
frdname:frdname, 
frdphone:frdphone 
}); 
var user = transaction.objectStore('users'); 
//Perform the add 
user.add({ 
    phone :phone, 
    email :email 
    }); 

答えて

2

エラーメッセージを読む: '値' プロパティに(コードでsomething.value)にアクセスするの

Uncaught TypeError: Cannot read property 'value' of null

一つをsomethingがヌルであるため、失敗しています。 .valueが使用される唯一の場所はdocument.querySelector()です。そのうちの1つが結果を返さない、つまりnullです。

これは、インデックス付きDBとは関係がありません。文書内の要素と一致しないセレクタを使用しています。

+0

null値を修正していただきありがとうございます。 "Uncaught DataCloneError: 'IDBObjectStore'で 'add'を実行できませんでした:オブジェクトをクローンできませんでした。何が問題なの? –

+0

これ以上の文脈ではわかりません。これは '.add()'に渡されたオブジェクトがクローン化できなかったことを示しています。与えられたコードサンプルでは、​​文字列を含むオブジェクトを渡すように見えますが、これは問題ありません。 –

+0

推測: 'var phone = document.querySelector("#phone ")を変更しましたか? 'to' 'var phone = document.querySelector("#phone ");'?これは、 'phone'が要素を参照しており、要素を複製できないことを意味します。 'console.log(...)'を実行するか、他のデバッグ方法を試して、コードが期待したことをしていない理由を理解することをお勧めします。 –

関連する問題