任何允许多个条件的 indexeddb 包装器?

Posted

技术标签:

【中文标题】任何允许多个条件的 indexeddb 包装器?【英文标题】:Any wrappers out there for indexeddb that would allow multiple conditions? 【发布时间】:2014-05-18 04:02:42 【问题描述】:

这段代码中的大部分内容都可以工作;除了最后的 sqlcalls。

完整代码:

<!doctype html>
<html><head>
    <meta charset="UTF-8">
<script type = "text/javascript" src="jquery-1.11.0.js"></script>
<script type = "text/javascript" src="ydn.db-iswu-sql-e-dev.js"></script>
</head><body><script type = "text/javascript">
//ydn.db.deleteDatabase('BibleWay');
var context_bible_schema = 
  name: 'context',
  keyPath: 'vsid',
  autoIncrement: true,
  indexes: [
    
      name: 'bid',
      keyPath: 'bid',
      unique: false,
      multiEntry: false
    , 
      name: 'bk',
      keyPath: 'bk',
      unique: false,
      multiEntry: false
     , 
      name: 'c',
      keyPath: 'c',
      unique: false,
      multiEntry: false
     , 
      name: 'v',
      keyPath: 'v',
      unique: false,
      multiEntry: false
    
  ]
;
schema = 
  stores: [context_bible_schema]
;
var db = new ydn.db.Storage('BibleWay',schema);
function downloadBible() 
    var i2=0;
    $.getJSON("http://bibleway.us/api/js/3.json", function(data)
        $.each(data, function( index, value ) 
            // bible id [bid]
            var split_bid=index;
            $.each(value, function( index, value ) 
                // bible book name
                console.log(index);
                var split_bk=index;
                  $.each(value, function( index, value ) 
                    // bible book chapter
                    var split_c=index;
                    $.each(value, function( index, value ) 

                        $doadd=new Object();
                        $doadd.bid=split_bid;
                        $doadd.bk=split_bk;
                        $doadd.c=split_c;
                        $doadd.v=index;
                        $doadd.t=value;
                        db.put('context',$doadd);
                        ++i2;
                    )

                  )
            )
        );
        showshv();
        
    );

function showshv() 
    db.getSchema(function(schema) 
      console.log(schema);
    );
    req = db.get('context', 2050);
    req.done(function(record) 
      console.log(record);
    );
    req.fail(function(e) 
      throw e;
    );
    db.from('context').select('bk').unique(true).list().done(function(hobby) 
        console.log(hobby);
    );



db.from('context').select('bk').unique(true).list().done(function(hobby) 
  if (hobby[0] === undefined) 
    downloadBible();
  else
    showshv();
  
);
document.write('hey<br>');
db.executeSql('SELECT * FROM context WHERE bid=\'3\' and bk = \'GEN\' AND c=\'50\'').then(function(results) 

  document.write(results);

, function(e) 
  throw e;
);

db.executeSql('SELECT MAX(c) FROM context').then(function(results) 
  console.log(results);
, function(e) 
  throw e;
);
</script></body></html>

我得到的错误是底部的最后两个“db.executeSql”。

未捕获的 ydn.error.NotSupportedException:条件太多。对于“where”子句。

这个有什么用。 indexeddb 是否有任何允许多个条件的包装器?

谢谢

【问题讨论】:

【参考方案1】:

executeSql 不支持,但我可以按照here 的描述手动加入。

【讨论】:

以上是关于任何允许多个条件的 indexeddb 包装器?的主要内容,如果未能解决你的问题,请参考以下文章

javascript 一个简单的indexedDB包装器功能

使用多个条件查询

Rust:允许多个线程修改图像(向量的包装器)?

IndexedDB:未捕获(承诺)DOMException

IndexedDb 更改时触发的事件?

使用 YDN-DB 的 IndexedDB:如何确定对象存储是不是存在