簡體   English   中英

ydn-db中的獲取功能不適用於Safari和所有Apple設備

[英]Get function in ydn-db not working in safari and all apple devices

不知道這是ydn-db中的錯誤還是我做錯了。 因此,數據已使用ydn-db成功保存在DB中,並且db.values可以正常工作,我可以從DB中獲取所有數據。 但是,當我只想從數據庫獲取一個數據輸入時,它在chrome中可以正常工作,但在野生動物園中卻無法通過ID從數據庫獲取單個數據。

但是,如果我寫了ROWID號,那么我可以在Safari的檢查器中看到它,而不是功能get中的ID,我可以得到它。

問題是我不知道該ROWID,所以我無法從DB獲取數據。

那么,是YDN-DB的get函數中的錯誤還是我的一些錯誤?

這有效:

db.values('sections')。done(function(data){console.log(data);});

這在Safari和Apple設備中不起作用:

db.get('section',sectionID).done(function(data){console.log(data);});

n

如Kyaw Tun先前所述,定義keyPath是能夠在WebSQL或Safari中檢索值的關鍵。

我只是想補充一下,每次您想在Safari中創建對數據庫的引用時,都需要在數據庫模式中指定keyPath。

當ydn訪問IndexedDB(Chrome)時,它會創建索引並為其分配指定的值,而在websql(Safari)中,主索引使用的是不同的值,因此當您在沒有模式的情況下打開數據庫存儲時,Safari只能基於在其內部主鍵上。

因此,在關閉瀏覽器后重新打開數據庫並且對數據庫的初始引用消失的情況下,需要使用架構重新打開它。

例如,假設先前已像該記錄一樣填充數據庫= {id:'586856',消息:'Testing in line key'}; db.put({name:'section',keyPath:'id'},record);

像這樣從現有數據庫按鍵訪問記錄將在Chrome中起作用,但在Safari中不起作用。

var db = new ydn.db.Storage('SectionDB');
db.get('section', '586856').done(function(data) {
  console.log(data);
}); 

如果您使用這樣的架構參考打開數據庫,則可以從現有數據庫中按鍵訪問記錄在Chrome和Safari中都可以使用,

var schema = {
  stores:[{
    name:'section',
    keyPath:"id"
  }]
};


var db = new ydn.db.Storage('section', schema);
db.get('section', '586856').done(function(data) {
  console.log(data);
}); 

使用db.keys獲取密鑰列表。 您可以使用這些鍵進行檢索。

注意鍵是類型敏感的。 例如,數字1和字符串“ 1”不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM