问题标签 [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.

0 投票
1 回答
115 浏览

node.js - LokiJs 集合上的芒果查询更改了集合的大小

我将 LokiJs 用作应用程序的内存缓存,该应用程序将数据存储在 CouchDB 中并允许通过 NodeJS 服务器进行检索。根据有关构建查询的文档,我的查询结果被分配给一个结果集对象:

combinedCache集合是.eqJoin其他两个集合的结果:

这将创建两个集合,一个errorCodeCache集合和一个messageCache集合。这combinedCache是错误messageId代码文档和_id消息文档的连接结果。当combinedCache我使用combinedCache.data().length.

但是,在我对缓存执行查询后,原始集合的大小更改为结果的大小;换句话说,如果我的查询返回 1 个 CouchDB 文档,combinedCache则 的大小现在为 1。我在文档中找不到任何引用说明.find对集合的查询会改变集合本身的结果。如果是这种情况,如何保留集合的大小?谢谢!

0 投票
1 回答
1818 浏览

javascript - 如何在 LokiJS 中删除集合

我最近一直在 Node 上研究 LokiJS,但我找不到删除整个 Collection 本身的命令,

我尝试使用这些命令并假设它会存在,但我找不到任何文档/示例来删除集合。

// let result = this.db.dropCollection(collectionName); // let result = this.db.removeCollection(collectionName); // let result = this.db.deleteCollection(collectionName);

其他方式我知道我可以通过读取文件并删除整个对象来实现相同的目的,但是有内置的 LokiJS 功能吗?

0 投票
1 回答
883 浏览

javascript - Lokijs 按值删除项目

我有我在 loki js 中创建的这个小数据库

我添加了一些项目,现在我正在尝试按值删除项目。我像这样存储我的价值观

并像这样删除

这是结果截图

在此处输入图像描述

我的删除代码不起作用,因为它没有删除所有项目并且没有按正确的顺序删除。

如何按值删除项目?

0 投票
2 回答
2132 浏览

cordova - in-memory DB (lokiJS) vs regular indexedDB

I was looking for a wrapper library for indexedDB that can store data.

(Specific use is for a JavaScript cordova app but one that can also work in the browser)

I have found LokiJS which seems feasible. However, LokiJS says it's an:

In-memory JavaScript Datastore with Persistence

But I don't understand what "in-memory" means. I tried googling, looking around, but couldn't find a concise explanation...

How is "in-memory" indexedDB different from regular indexedDB?

0 投票
1 回答
672 浏览

node.js - 无法使用 lokijs 将数据保存在文件中

我使用自动保存选项尝试了一个非常非常基本的 lokijs 示例,但我无法保存数据......

我的错误的想法?(它改编自https://github.com/techfort/LokiJS/wiki/LokiJS-persistence-and-adapters上的示例

我在我的 PC(Windows)上使用 Node v10.14.2 和最新版本的 lokijs?

0 投票
0 回答
46 浏览

lokijs - 是否可以获得 lokijs 数据库内容的散列(例如 SHA256 散列)?

我正在构建一个应用程序,我需要在其中计算数据库上的加密哈希。我需要它是确定性的。也就是说,我将拥有不同的数据库实例,它们应该是相同的,并且应该产生相同的哈希值。相反,如果它们不相同,则散列不应该匹配。

我正在考虑将我的数据存储在 lokijs 中,但如果我这样做了,我不确定如何在不提取所有数据并在其上运行我的哈希算法的情况下计算哈希,这将是令人望而却步的。如果有一个“get hash”函数可以返回数据库内容的哈希值,那不是很酷吗?不要以为这样的事情存在,不是吗?

如果这不存在(并且我在文档中没有看到任何提及它,所以它可能不存在)然后我正在考虑在数据库前面添加一个“垫片”,我将在其中维护哈希数据库中的所有对象。例如:

以此类推,更新和删除的类似函数,给定一个对象,将在 myCollection 中更新或删除它,并在 myHashCollection 中更新或删除相应的哈希值。

然后我可以编写一个 getHash() 函数,它将 myHashCollection 中的哈希组合在一起并返回一个根哈希。

如果我有这个,我可以非常快速地比较来自我的应用程序不同实例的根哈希,以立即知道它们是否具有相同的数据。

此外,我可以确保持久/恢复中没有错误。我将保留对象数据并仅保留根哈希。从持久存储中恢复我的对象后,我将遍历所有数据并重新计算散列,将它们组合在一起,我应该得到与存储的根散列相同的值。如果没有,我知道出了点问题。类似的逻辑可以用来验证内存中存储的数据没有被破坏。

我还可以编写一个默克尔树算法,它可以非常有效地允许从数据库中检索到的任何特定对象与根哈希进行检查。

我疯了还是这听起来合理?

0 投票
2 回答
146 浏览

node.js - Lokijs 发现给出的响应不正确

Lokijs 在 Node JS 环境中给出不正确的查找响应

这是从网上截取的一个例子:

插入一对虚拟数据后;我从同一个集合中获取并将其分配给一个名为“tyrfing”的 templ 变量;

现在,这是问题所在;我使用名为“upated”的新值对所有者属性进行了更新。尽管我没有对更新进行 loki 保存/更新;

当我将 find on name 称为“tyrfing”时,它给出的响应为

这是不正确的,我希望响应中的所有者名称为“Svafrlami”;因为我没有进行任何数据库提交;

请纠正我,如果我在这里做错了什么;

您可以通过复制粘贴在此处在线测试此代码:http ://www.obeliskos.com/LokiSandbox/

0 投票
1 回答
111 浏览

vue.js - why electron builder dont include files

I try to include lokiJS (locla json database) to my vue-electron app from a vue-cli-plugin-electron-builder!.

src/db/db.js

src/main.js

src/components/component.vue

If I work in dev mode all works fine but when I build electron production app is import db from './db/db' not include. Thank you!

0 投票
1 回答
409 浏览

javascript - LokiJS 在模块内返回空数据库

我正在为 NodeJS 应用程序创建一个 noSQL 数据库。我希望数据库作为自己的类存在。但是,在模块内移动我的数据库初始化代码后,它不再起作用。LokiJS 无法加载数据库,我无法创建集合。加载数据库的结果为 null,this.db 未定义,尝试获取集合会生成Uncaught TypeError: Cannot read property 'getCollection' of undefined.

0 投票
2 回答
846 浏览

javascript - 尝试更新 LokiJS db 但出现“尝试更新未同步的文档”错误

尝试在 Loki JS 中动态添加他们拥有的人员和水果的条目,但我不断收到Trying to update unsynced document. Please save the document first by using insert() or addMany()错误消息。有人对如何成功地做到这一点有任何想法吗?

我已经记录了传入的值,它们与数据库中已经找到的值相匹配。