【问题标题】:ydn-db fulltext species search demo doesn't work when offline: this.db.search is not a functionydn-db 全文物种搜索演示在离线时不起作用:this.db.search 不是函数
【发布时间】:2014-02-22 06:02:33
【问题描述】:

我在网上打开了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

火狐:

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)不够用,这个app依赖很多:

<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 包中。

【问题讨论】:

  • 编译后不需要这些依赖。

标签: javascript indexeddb ydn-db


【解决方案1】:

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

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

你使用demo中的js文件了吗?

【讨论】:

  • 您可以查看更新。顺便说一句,allow-file-access-from-files 并非无关紧要。如果你不设置这个标志,你会得到XMLHttpRequest cannot load file:///path/to/data.csv. Cross origin requests are only supported for HTTP 错误,因为数据库是由 AJAX 加载的!但是你能提供所需 js 文件的完整 url 列表吗? (因为它们不包含在可下载的 github zip 包中)
  • 很抱歉造成误会。此网页不会使用file 协议运行。
  • 但是你能解释一下为什么吗?如果这个应用没有服务器端依赖(只有客户端代码),那么file://协议有什么问题???
  • @lyricallywicked - 这就是浏览器的工作方式。文件协议只是有限的。你需要一个网络服务器,即使它是本地的,只要你使用 http 协议。这不是 ydb 的问题……这只是浏览器的构建方式。
猜你喜欢
  • 1970-01-01
  • 2016-01-09
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-16
相关资源
最近更新 更多