不确定是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
发布于 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则不行。
var db = new ydn.db.Storage('SectionDB');
db.get('section', '586856').done(function(data) {
console.log(data);
}); 从现有DB中按键访问记录将在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);
}); 发布于 2014-02-28 19:13:52
使用db.keys获取密钥列表。你可以用这些钥匙取回。
注意键是类型敏感的。例如,数字1和字符串'1‘是不同的。
https://stackoverflow.com/questions/22099460
复制相似问题