问题标签 [lovefield]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Lovefield 如何从其他浏览器内 JavaScript 数据库中脱颖而出?
Lovefield是一个新的跨浏览器、类似 SQL 的 JavaScript 关系数据库。与现有的客户端 JS 数据库相比,它有哪些优势,例如:
- YDN-DB - github.com/yathit/ydn-db
- TaffyDB - taffydb.com
- HTML5SQL.JS - html5sql.com
- AlaSQL.js - github.com/agershun/alasql
javascript - 分发使用外部 Javascript/jQuery 库的 AngularJS 模块
我正在为 AngularJS 开发一个可重用的组件(模块),它可用于启用使用 AngularJS 构建的应用程序的离线功能。
为了在不重新发明轮子的情况下实现客户端存储功能,我决定使用谷歌提供的这个名为Lovefield的优秀库,它的工作原理是,
一个跨浏览器、类似 SQL 的关系查询引擎,用于纯 JavaScript 中的 Web。
我知道如何通过在我的模块中创建自定义指令、服务等来用 angularjs 包装这个库。但我的问题是,
在分发我的模块时,我是否需要在我自己的模块代码中包含 lovefiled 的 Javascript 代码,或者我是否应该要求开发人员自己<script>
在他的代码中使用标签包含它html
?推荐的方法是什么? (显然这两种方法都可以使用)
我在这里浏览了一些 3rd 方角度模块,但无法弄清楚推荐的方法是什么。
reactjs - 异步通量存储操作
我正在使用 Flux 库来提供调度程序和存储。但是,我使用 Google 的 Lovefield 作为记忆库的一种方式。
问题是 Lovefield 的 API 完全是异步的,因此我无法发出更改或执行 waitFor。
对更好的设计模式有什么建议吗?
javascript - 与lovefield连接承诺的例外情况
抛出的异常:
lovefield.js:2113 Uncaught NotFoundError:无法在“IDBDatabase”上执行“事务”:找不到指定的对象存储之一。
伙计们,你们好,我已经与 Lovefied 斗争了很长一段时间,试图初始化我的数据库模式。我已经将所有东西都包装在我怀疑可能存在问题并且没有得到任何东西的 try catch 块中。我已经追踪到引发异常的lovefield函数。scanRowId_
但是,我仍然不知道是什么原因造成的。如果它像丢失表格或丢失字段一样直接,它应该在途中破坏了一些东西。任何想法是什么原因?
附表 1:lovelace 源代码
部分内容为:try { var tx = opt_tx || db.transaction([tableName]); req = tx.objectStore(tableName).openCursor(null, "prev"); } 抓住 (e) { 拒绝(e); 返回; } 是抛出异常的地方。
图表 2:构建 db 模式的代码
图表 3:中断的代码
具体来说,中断发生在承诺返回时。
return schemaBuilder.connect().then(function(db) {
图表 4:堆栈跟踪
未捕获的 NotFoundError:无法在“IDBDatabase”上执行“事务”:未找到指定的对象存储之一。(匿名函数)@
堆栈跟踪:
lovefield.js:2113setTimeout (async)goog.async.throwException @ lovefield.js:2112(anonymous function) @ lovefield.js:2589goog.async.run.processWorkQueue @ lovefield.js:2250Promise.resolve (async)goog.async.run.schedule_ @ lovefield.js:2227goog.async.run @ lovefield.js:2220goog.Promise.scheduleCallbacks_ @ lovefield.js:2515goog.Promise.resolve_ @ lovefield.js:2480(anonymous function) @ lovefield.js:2302(anonymous function) @ lovefield.js:6393goog.Promise @ lovefield.js:2290scanTableRowId @ lovefield.js:6387execSequentially @ lovefield.js:6410(anonymous function) @ lovefield.js:6413goog.Promise @ lovefield.js:2290lf.backstore.IndexedDB.scanRowId_ @ lovefield.js:6412(anonymous function) @ lovefield.js:6316IndexedDB (async)(anonymous function) @ lovefield.js:6301goog.Promise @ lovefield.js:2290lf.backstore.IndexedDB.init @ lovefield.js:6298lf.base.init @ lovefield.js:11246lf.proc.Database.init @ lovefield.js:11548lf.schema.Builder.connect @ lovefield.js:12202getDbConnection @ lovefieldservice.js:181lovefieldService @ lovefieldservice.js:194instantiate @ angular.js:4619(anonymous function) @ angular.js:4459invoke @ angular.js:4604enforcedReturnValue @ angular.js:4443invoke @ angular.js:4604(anonymous function) @ angular.js:4403getService @ angular.js:4550injectionArgs @ angular.js:4574instantiate @ angular.js:4616(anonymous function) @ angular.js:9870(anonymous function) @ angular-ui-router.js:4081invokeLinkFn @ angular.js:9492nodeLinkFn @ angular.js:8978compositeLinkFn @ angular.js:8226publicLinkFn @ angular.js:8106(anonymous function) @ angular.js:8447updateView @ angular-ui-router.js:4021(anonymous function) @ angular-ui-router.js:3959Scope.$broadcast @ angular.js:17143$state.transition.resolved.then.$state.transition @ angular-ui-router.js:3352processQueue @ angular.js:15552(anonymous function) @ angular.js:15568Scope.$eval @ angular.js:16820Scope.$digest @ angular.js:16636Scope.$apply @ angular.js:16928done @ angular.js:11266completeRequest @ angular.js:11464requestLoaded @ angular.js:11405XMLHttpRequest.send (async)(anonymous function) @ angular.js:11442sendReq @ angular.js:11235serverRequest @ angular.js:10945processQueue @ angular.js:15552(anonymous function) @ angular.js:15568Scope.$eval @ angular.js:16820Scope.$digest @ angular.js:16636Scope.$apply @ angular.js:16928bootstrapApply @ angular.js:1694invoke @ angular.js:4604doBootstrap @ angular.js:1692bootstrap @ angular.js:1712angularInit @ angular.js:1606(anonymous function) @ angular.js:30423fire @ jquery.js:3182self.fireWith @ jquery.js:3312jQuery.extend.ready @ jquery.js:3531completed @ jquery.js:3547
lovefield - Groupby 在洛夫菲尔德
你好我尝试在lovefield中使用innerjoin并尝试groupBy
像这样使用:
但它只给我这个错误:
Syntax error: (525) Invalid projection list or groupBy columns.
database - 浏览器硬盘上的 Javascript 数据库
背景:
我们正在为 Chrome 浏览器编写一个 HTML5 离线第一个应用程序。
我们专门针对 Chrome 浏览器,我们不想制作扩展程序来提供应用程序的功能。
我们的 HTML 应用程序还进行了后端 API 数据操作;但我们也想在浏览器本地存储应用程序状态,因为应用程序离线优先。
问题:
所以现在我知道了 Chrome 附带的标准存储选项,如 LocalDB、IndededDB 和“Web SQL”。我不愿意使用它来存储应用程序状态,因为任何使用 chrome 的人都可以编辑他们的本地状态,并弄乱应用程序的行为。
所以问题是: - 是否可以使用类似的东西
以一种用户不容易破解的方式将数据库存储在浏览器的硬盘上?
如果有,那么该任务的推荐工具是什么?
(我们不需要该工具来跨浏览器工作;只需在 Chrome 中)
angular - 如何配置 Angular-CLI 生成的项目以包含 SharedWorker
SharedWorker
将 a 添加到@angular/cli >1.2
生成的项目的具体步骤是什么。我希望在 TypeScript 中定义 SharedWorker(具有完整/正确的类型定义编辑器支持),与主项目共享接口,并与主项目一起不断编译和测试。
我还没有找到描述如何修改 cli 生成的项目以包含 aWorker
或SharedWorker
. 但是,有几篇文章(例如这篇文章)展示了如何转换整个 cli 生成的项目以将其作为 Web Worker 运行。但这不是我的用例。
我想将与Lovefield数据库的交互限制SharedWorker
在与主应用程序不同的进程中运行。
尽管我已经尝试了一些尝试来解决这个问题,但我并没有取得太大进展。希望有人可以为我(和未来的读者)节省很多时间。
javascript - 按日期时间单位计数项目和分组
我正在尝试组织一个查询,该查询应该打印一个count
按时间单位排序的项目,例如 a hour
, aday
等。
我的限制是我使用的是LovefieldDB javascript 库并且复杂的查询是有限的。
我有一个单位表,其中主要字段是创建日期,如下所示:
我期望的结果是每小时计算项目数:
我要避免的是选择所有行并循环处理它们,因为这个软件将有数千行,我必须为day
,month
和. 创建类似的查询year
。
我认为一个可能的解决方案是再添加 4 个日期时间字段,我将在其中保存created_hour
, created_day
, created_month
,created_year
这样我就可以轻松订购它们。
你有什么建议吗?
javascript - 是否有任何支持部分文本搜索的客户端 Db 库?
我将通过IndexDB
或lovefield
但到目前为止找不到像我们通过LIKE
关键字在 SQL 查询中那样搜索部分文本的方法。有人可以指导我如何实现吗?
sql - List last messages of chats
I want to get the last messages applicable to (either sent / received by ) a user. In the above example, there are only 2 users (a, b), and the last message applicable to them is id = 3. So the expected result is
There are similar questions in SO, the closest I found was here
The last answer seems to what I wanted, but it is complex to wrap my head around, and also couldn't make it work.
I use lovefield and run it in the browser. It supports join and subset of sql syntax, but may not advanced use. Below code gives last message for a provided user id, but I want rows for all users.