IndexDB
ユーザーのオブジェクトストアを作成するために使用していますが、ユーザーを追加しようとすると、var request = db.transaction(['person'], 'readwrite')
行にエラーが表示されます。
与えられたエラーは次のとおりです。
"Uncaught TypeError:test.js:45のadd(test.js:32)でundefinedのプロパティ 'transaction'を読み取れません"
私のスクリプトは次のようになります。
var request = window.indexedDB.open("connectDB", 1);
request.onerror = function (event)
{
console.log('The database is opened failed');
};
var db;
request.onsuccess = function (event)
{
db = request.result;
console.log('The database is opened successfully');
};
var db;
request.onupgradeneeded = function (event)
{
db = event.target.result;
var objectStore;
if (!db.objectStoreNames.contains('users'))
{
objectStore = db.createObjectStore('users', { keyPath: 'id' });
objectStore.createIndex('name', 'name', { unique: false });
objectStore.createIndex('email', 'email', { unique: true });
}
}
function add()
{
var request = db.transaction(['person'], 'readwrite')
.objectStore('person')
.add({ id: 1, name: 'Jam', age: 24, email: '[email protected]' });
request.onsuccess = function (event) {
console.log('The data has been written successfully');
};
request.onerror = function (event) {
console.log('The data has been written failed');
}
}
add();
どんな助けもいただければ幸いです
初期化されていないときdb
の呼び出し中にアクセスしようとしているようですadd()
(この呼び出しadd()
は、スクリプトが実行されるとすぐに発生することに注意してください)。
db
ただし、変数は、データベース接続が正常に作成された場合にのみ初期化されます。
request.onsuccess = function (event)
{
db = request.result;
console.log('The database is opened successfully');
// It is now safe to interact with the database
};
いくつかの方法が最も簡単なのに通話を移動することですけれども、この問題に対処することができますがありますadd()
にonsuccess
そのようなハンドラ:
request.onsuccess = function (event)
{
db = request.result;
console.log('The database is opened successfully');
add(); // Add this
};
// add(); <-- remove this from the end of your script
最後に、2つのvar db;
変数が宣言されていることに気付きました。そのうちの1つを削除することを検討してください。お役に立てれば!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加