Не могу прочитать данные из IndexedDB 
		
		
		
		Здравствуйте. 
	Есть такой код: function getRec(Rec, f){ connectDB(function(db){ var request = db.transaction([storeName], "readonly").objectStore(storeName).get(id=0); request.onerror = logerr; request.onsuccess = function(){ Rec = request.result; console.log(Rec); f(request.result ? request.result : -1); } }); } Вывод в консоль самого Rec я вижу в хроме. Но, например, Rec.width консоль выдает undefined. Записать объект Rec {width : 1000, .....} мне удалось, а вот прочитать записанное из другого файла js не могу. Я только пытаюсь освоить js. Помогите, может кто-то рабочий код подкинет? Дальше я сам попробую разобраться. Заранее благодарен.  | 
	
		
 Что значит из "другого файла js"? 
	С другой html страницы? Вы их запускаете с сервера из одного домена?  | 
	
		
 Я запускаю на локальном компьютере без серверов и прочего. 
	Планирую сделать расширение, способное работать вообще без сети. Что-то похожее на speed dial 2.  | 
	
		
 IndexedDB работает по политике одного источника. Т.е базу данных могут использовать страницы только с того же домена, что и страница создавшая базу. При загрузке страниц с локального компьютера из файловой системы понятия домена нет. Поэтому и не работает. 
	 | 
	
		
 Вы не поняли. 
	У меня все работает. Я, например, могу записать в IDB запись, т. е. объект вида let D = {"length" : 100, "Q" : 200 ...}. И прочитать D могу при помощи транзакции - в консоли он виден. Но вот к его свойствам доступа нет, например, D.width и т.д. Я подозреваю, что вообще детскую ошибку делаю, возможно, на уровне лексики языка. Поэтому и прошу посмотреть рабочий код, который читает из БД, записывает в нее и редактирует выбранную запись. Я только начинаю изучать JS, поэтому возможны элементарные ляпы. А Вам спасибо большое - Вы хотя бы откликнулись на зов чайника.  | 
	
		
 Цитата: 
	
 Что именно видно в консоле? console.log(Rec); Что выводится?  | 
	
		
 взял тут https://developers.google.com/web/il...with-indexeddb 
	
dbPromise.then(function(db) {
  var tx = db.transaction('store', 'readonly');
  var store = tx.objectStore('store');
  return store.get('sandwich');
}).then(function(val) {
  console.dir(val);
});
это Promise 
return store.get('sandwich')
потом идет then и там уже значение...  | 
	
		
 Цитата: 
	
  | 
	
		
 Доброго времени суток. 
	Вот весь код. var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB, IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction, baseName = "Base_0", storeName = "Options"; storeName1 = "List"; let f = function() {}; let Rec = {}; function logerr(err){ console.log(err); } function connectDB(f){ var request = indexedDB.open(baseName, 1); request.onerror = logerr; request.onsuccess = function(){ f(request.result); } request.onupgradeneeded = function(e){ e.currentTarget.result.createObjectStore(storeName , { keyPath: "id" }); e.currentTarget.result.createObjectStore(storeName 1, { keyPath: "path" }); connectDB(f); } } function getRec(Rec, f){ connectDB(function(db){ var request = db.transaction([storeName], "readonly").objectStore(storeName).get(id=0); request.onerror = logerr; request.onsuccess = function(){ Rec = request.result; console.log(Rec); f(request.result ? request.result : -1); } }); } function getStorage(f){ connectDB(function(db){ var rows = [], store = db.transaction([storeName], "readonly").objectStore(storeName); if(store.mozGetAll) store.mozGetAll().onsuccess = function(e){ f(e.target.result); }; else store.openCursor().onsuccess = function(e) { var cursor = e.target.result; if(cursor){ rows.push(cursor.value); cursor.continue(); } else { f(rows); } }; }); } function setRec(Rec){ connectDB(function(db){ var request = db.transaction([storeName], "readwrite").objectStore(storeName).put({Value : Rec, "id": 0}); request.onerror = logerr; request.onsuccess = function(){ return request.result; } }); } function delRec(Rec){ connectDB(function(db){ var request = db.transaction([storeName], "readwrite").objectStore(storeName).delete(Rec ); request.onerror = logerr; request.onsuccess = function(){ console.log("Record delete from DB:", Rec); } }); } document.addEventListener('DOMContentLoaded', function init() { connectDB(f); //Rec.width = 500; //setRec(Rec); //console.log(Rec); getRec(Rec, f); console.log(Rec); }, false); Это будущее расширение хром. Оно работает в браузере на локальной машине. Там нет никаких серверов. У Вас может есть рабочий код работы с IndexedDB? Такой что бы читал и писал. Последнее не обязательно - запись целого объекта из этого кода работает. Мне всего-то нужно прочитать поля объекта, а не объект целиком. Целиком он читается.  | 
	
		
 amon--ra, 
	Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.  | 
| Часовой пояс GMT +3, время: 11:49. |