ydn-db全文物种搜索演示在离线时不起作用:this.db.search不是一个函数

时间:2014-01-30 04:42:03

标签: javascript indexeddb ydn-db

我在网上开了http://dev.yathit.com/demo/ydn-db-text/animals/animals.html个演示版,但它确实有效。但是当我尝试在离线模式下使用此演示时,出现了问题。

在输入内容后,会出现这些错误消息:

Chrome(已启用--allow-file-access-from-files标记):

Uncaught TypeError: Object [object Object] has no method 'search'  -->  animals.js:111
  Animals.handleSearch

Firefox:

TypeError: this.db.search is not a function
  var rq = this.db.search('name', this.ele_input_.value);
  animals.js (line 111)

顺便说一句,我已经“加载了2359只动物,索引......完成了”。消息,这意味着数据库已加载,但var rq = this.db.search('name', this.ele_input_.value)的问题是什么?

更新
我检查了https://github.com/yathit/ydn-db-fulltext/blob/master/examples/animals/animals.html来源,现在我看到了问题:两个本地js文件(ydn-db.jsanimals.js)是不够的,这个应用程序有很多依赖项:

<script src="../../../closure-library/closure/goog/base.js"></script>
<script src="../../../closure-library/closure/goog/deps.js"></script>
<script src="../../../ydn-base/src/deps.js"></script>
<script src="../../../ydn-db/src/deps.js"></script>
<script src="../../../natural/js/deps.js"></script>
<script src="../../../fullproof/js/deps.js"></script>
<script type="text/javascript"
        src="../../../fullproof/js/tokenizer/categ_letters_numbers.js"></script>
<script type="text/javascript"
        src="../../../fullproof/js/tokenizer/normalizer_lowercase.js"></script>
<script type="text/javascript"
        src="../../../fullproof/js/tokenizer/normalizer_lowercase_nomark.js"></script>
<script type="text/javascript" src="../../src/deps.js"></script>
<script type="text/javascript">
    goog.require('ydn.debug');
    goog.require('ydn.db.crud.Storage');
    goog.require('ydn.db.crud.Storage.text');
</script>
<script src="../../../ydn-db/config/crud.js"></script>
<script type="text/javascript" src="../../../ydn-db/src/ydn/db/tr/inject.js"></script>
<script type="text/javascript" src="../../../ydn-db/src/ydn/db/crud/inject.js"></script>  

但这些文件不包含在可下载的zip包中。

1 个答案:

答案 0 :(得分:1)

看起来你正在使用不同的ydn-db js文件。大多数ydn-db分发文件没有全文搜索模块。

网页是客户端html。它应该工作。 IndexedDB必须由有效的源服务,因此启动服务器进行测试。我相信--allow-file-access-from-files无关紧要。

您是否在演示中使用了js文件?