问题标签 [lokijs]
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 - 按数字索引查找
我尝试按索引查找条目:
但我没有得到任何结果。转储数据库显示条目。任何想法 ?
javascript - 浏览器应用程序无法访问 loki.js
我正在尝试loki.js
在浏览器应用程序中使用。我在 HTML 中包含了以下脚本
但是下面的js代码给了我"unexpected token"
错误
javascript - Lokijs 是否会生成自己的 ID?
我一直在尝试在一个项目中使用lokijs 。
Lokijs 是否会生成自己的 ID?还是我们需要自己处理?
lokijs - Lokijs ID 是唯一的吗?
lokijs id ($loki) 是唯一的吗?
如果我从一个集合中有 2 个文档,其中 $loki:1 和 $loki:2 作为 id,并且我删除了 $loki:1,那么我创建的下一个文档应该是 $loki:3 吗?
indexing - LokiJS:为索引插入现有值不会出错 - 如何制作唯一索引?
如果我尝试覆盖现有 indexed
字段,我不会收到错误消息。它应该出错,因为它不是update()
!
尝试插入现有 userID 时如何创建唯一索引以获取错误?
node.js - 如果关注建模数据,则使用什么 (in_memory) 图 DB
我没有想法,希望能得到一些有用的意见。我正在使用这个问题来压缩我的经验并分享它们,希望能激励一些分销商将图形数据库建模作为一流的问题/方式进行下一步。
几个星期以来,我一直在验证 node.js 可以使用的一些图形数据库解决方案。我的用例是保存不同社交用户网络帐户的交互。需要以最有效的方式使用 CPU 和内存。
我最重要的要求是:
- in_memory (至少用于索引)
- 开源(免费使用)
- 与一等公民相同的JavaScript/Node.js性能
- 舒适的查询和建模语言
Neo4J
我真的很喜欢cypher,所以我最好的选择是 Neo4j。但是关于 Neo4j 的主要问题是 JavaScript 访问是非本地的。它使用比直接 Java 访问慢十倍 (10x)的 REST-API。所以我看了一下node-neo4j-embedded,但它已经两年多没有活动了。看起来它的作者根本不活跃(坏迹象)。
ArangoDB
ArangoDB 的真正优秀的核心开发人员回答了我关于内部的问题。最后,这意味着JavaScript是一等公民,因为原生查询可以从 JS 中推出。看看开源基准,我认为这是公平的。但恐怕他们没有使用node-neo4j-embedded作为他们的基准。基准比较了 REST-API(因@weinberger 评论而编辑)。我希望他们比较原生 API(也许有人足够窥探并试一试!-让我们知道!)。更新:正如我现在注意到的,OrientDB 已经用一个新的 node.js 驱动程序回答了基准测试(使用命令缓存通过启动服务器-Dcommand.cache.enabled=true -Dcommand.cache.minExecutionTime=3,这是不公平的,因为它不是查询缓存基准!)
因为我喜欢使用 ArangoDB 作为图形数据库,所以我有 3 个选择(来源:FAQ):
一般来说,它不像 cypher那样舒服。而且我不确定如何比较以及建模数据的正确方法是什么(就像Neo4J 解释得很好)。我很想为 ArangoDB Graphs 提供类似的东西。感觉 ArangoDB 专注于图形操作,如果关系多于行,Neo4J 更适合使用图形的需求(使用图形而不是使用连接的关系的原因)。
MongoDB
基于文档的 MongoDB 并未针对图形操作进行优化,但最近获得了一个实验性的 in_memory 存储引擎。还有一些与 in_memory 或图形相关的项目,但没有什么是真正引人注目的。在这个讨论中,MongoDB 似乎不是我喜欢使用的。
东方数据库
因为有一个关于OrientDB 和 MongoDB的比较(来自 OrientDB),所以我打算使用这个。“ OrientDB 有一个混合的 Document-Graph 引擎”使用 SQL。我是前 PHP/MySQL 专家。但是建模部分在哪里?他们使用图表的章节不像密码。这就像使用 SQL for Graphs。这并没有错,但是在我错过建模感觉之前使用密码。如果有人用 OrientDB 和 Graphs 做了一个建模过程,也许你可以写一个像Neo4J 那样的教程。
更新:关于第一个公民的 JavaScript 访问有消息:“在下一个版本中,此驱动程序的速度将与本机 Java 相媲美” 分叉的 node.js 驱动程序已在前几天修复了 bin。
更新:在选择 OrientDB 之前,您可能想阅读有关从那里链接的一些问题和讨论的文章。这篇文章涉及一个敏感问题,应该以批判的态度来对待。此更新作者的注意事项:我是编辑 SO 的新手,没有足够的声誉来发表评论。我相信这个信息是一个有效的讨论点,不知道如何根据 SO 规则把它放在这里。
LokiJS
在我研究 Neo4J、ArangoDB 和 MongoDB 之前,我曾使用过名为LokiJS的基于 JavaScript 的 in_memory 数据库,遵循策略的接缝忽略了降低性能和效率的所有因素。LokiJS 正在尝试完成 Mongo-Style (RoadMap)。主要问题是规模化能力差。当然,它不是图形数据库,但在我的项目开始时它是一个有趣的解决方案。此外,找到所有分布式文档也不是一种完美的感觉(也许他们应该用 GitBook 重新启动)。最后 LokiJS 是一个非常有趣的项目,我希望他们能继续前进!
级别数据库
以前,当我写学位论文时,我正在查看 levelDB。写这篇文章时记住了这一点,我搜索了LevelDB in_memory并得到了一个很有希望的结果,称为MemDown(另请参见参考资料)。我还没有测试过这个发现,但也许有人有为此解决方案工作和建模的经验。如果所有其他方法都不适合,也许这将是最有效的方法,因为我会简单地编写一个轻量级的密码克隆,目标是尽可能保持轻量级。
编辑:由于评论,这里是LevelGraph的链接。作为为 LevelGraph/LevelDB 实现 CYPHER 解析器的想法,您的出发点是比较
密码:
水平图:
结论
正如您可能注意到的那样,我不是关于图表的超级英雄。但这是我最初对此的深入研究,我试图获得一个概述。我想有很多人想问和我一样的问题,但没有时间。我希望这篇文章能对很多人有所帮助,并且会通过评论和答案来改变,从而成为一个很好的概述如何为图形数据建模。
@editors:不客气。
@commenters:这是我个人研究的结果——如果你也像我一样经历过一段旅程,请像我对我评估的每个数据库所做的那样做一个简短的总结来回答(不要忘记瞄准我的 4 个目标) .
javascript - 如何在 lokijs Collection 中获取嵌套对象
我正在使用 lokijs 来存储一些我需要使用的数据。我的数据如下所示。作为 lokijs 的新手,我一直在努力寻找一种方法来item_part_option_groups
摆脱part
.
我的代码
数据
javascript - Reorganize simple app with nodejs and lokijs
It is my first node.js app. I use http://www.nodebeginner.org/ as example and http://lokijs.org/ as in-memory db. So, i have problem with code orgatization. Now it is looks like following:
index.js
server.js
router.js
handler.js
With current code structure I have to pass db variable from the most begining index.js to the last handler.js. It seems like not brilliant solution for me.
Can anybody help me with it? Thx in advance.
lokijs - 无法使用 lokiJs 加载数据库
我试图创建一个数据库,并将一个集合添加到该数据库中,并将更改保存到 IndexedDB。
下面是我的代码
- 两个控制器 SaveController 和 LoadController。
myApp.controller('SaveController', ['$scope', 'Loki', function ($scope, Loki) {
}]);
然后在我的 LoadController 我使用
myApp.controller('LoadController', ['$scope', 'Loki', function ($scope, Loki) {
}]);
当我提醒“alert(db.getCollection("SampleCollection"));”时我得到一个空值 . 它永远不会进入“loadDatabase”方法的回调。
有什么我想念的吗?
浏览器中的 IndexedDB
这里的页面html
编辑默认的本地存储实现
我使用 loki js 的默认实现,我尝试加载离线数据库,即使数据库存在,每次都将结果显示为 null
每次警报“第一次加载..”被触发..我在这里遗漏了什么..?
javascript - LokiJS 与科尔多瓦
我目前正在使用 Onsen UI+Cordova 开发一个应用程序,并尝试使用 LokiJS 作为我的无服务器数据库。根据 LokiJS 的文档:
如果未指定任何内容,Loki 会尝试使用默认方法(Node 中的 fs、浏览器中的 localStorage 和 cordova)。
这是否意味着我不能将数据库文件 *.json 写入文件系统,即。SD卡或内部存储在某处?