首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ydn-db中的Get功能不适用于safari和所有的苹果设备。

在ydn-db中的Get功能不适用于safari和所有的苹果设备。
EN

Stack Overflow用户
提问于 2014-02-28 15:39:26
回答 2查看 307关注 0票数 0

不确定是ydn-db中的某个bug,还是我做错了什么。因此,数据是成功地保存在数据库中的ydn-db和db.values工作正确,我可以从数据库获得所有的数据。但是,当我只想从DB获得一个数据输入时,它在chrome中是正确的,但是在safari中,它不能通过ID从DB获得单个数据。

但是如果我写ROWID号,我可以在safari的检查器中看到,而不是函数get中的ID,我可以得到它。

问题是我不知道ROWID,所以我无法从DB获得数据。

那么,是YDN-DB的get函数中的错误还是我的错误呢?

这样做是可行的:

Db.values(‘区段’).done(函数(数据){console.log(数据);});

这在safari和apple设备中不起作用:

Db.get(“节”,sectionID).done(函数(数据){console.log(数据);});

thnx

EN

回答 2

Stack Overflow用户

发布于 2014-05-08 00:17:29

正如Kyaw先前所说,定义keyPath是能够检索WebSQL或Safari中的值的关键。

我只想补充一点,每次您希望在Safari中创建对DB的引用时,都需要在DB中指定这个keyPath。

当ydn访问IndexedDB (Chrome)时,它会创建索引并指定指定的值,在websql ( Safari )中,主索引使用不同的值,因此当您在没有模式的情况下打开DB时,Safari只能根据其内部主键进行查询。

因此,在浏览器关闭并对DB的初始引用消失后重新打开DB的情况下,需要使用模式重新打开它。

例如,假设以前曾像下面这样填充DB = {id:'586856',消息:‘been in line key'};db.put({name:’节‘,keyPath:'id'},record);

从这样的现有数据库中按键访问记录在Chrome中是可行的,而Safari则不行。

代码语言:javascript
复制
var db = new ydn.db.Storage('SectionDB');
db.get('section', '586856').done(function(data) {
  console.log(data);
}); 

从现有DB中按键访问记录将在Chrome和Safari中运行,如果您使用这样的模式引用打开数据库,

代码语言:javascript
复制
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);
}); 
票数 2
EN

Stack Overflow用户

发布于 2014-02-28 19:13:52

使用db.keys获取密钥列表。你可以用这些钥匙取回。

注意键是类型敏感的。例如,数字1和字符串'1‘是不同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22099460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档