问题标签 [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 投票
0 回答
292 浏览

javascript - 为什么 LokiSFSAdapter 可以在 Linux 上运行,但不能在 Windows 上运行?

TL;DR一段 Javascript 代码在 Linux 上完美运行,而在 Windows 上表现不一致。


我正在编写一个 Electron 应用程序,将 Vue.js 用于前端,Vuex 用于数据管理,LokiJS 用于持久性存储(其文件系统适配器在后台)。我在 Linux 上开发这个应用程序,但有时我不得不切换到 Windows 来为客户端创建一个 Windows 版本。Linux 构建总是完美无缺,而 Windows 则行为不端。我认为这是一个 LokiJS 问题,但是,在隔离 LokiJS 特定代码后,它甚至在 Windows 上也能正常工作。

这是简化的store.js文件,其中包含我的应用程序中所有与 Vuex 和 LokiJS 相关的代码。


Linux 上的行为

  • setupHandler每次应用程序启动时它都会调用,
  • 它正确地将数据保存到和database.json相应的集合中database.json.0database.json.1adsprofiles
  • addAd()被调用时,它可以通过调用正确访问所有数据db.getCollection('ads'),然后insert()就可以了。

Windows 上的行为

  • setupHandler仅在database.json不存在时调用。database.json但是,如果它不存在,它会正确创建。
  • 只创建一个文件 - database.json.0,但不在那里保存任何数据,它只是一个空文件。它甚至不会database.json.1为第二个集合创建。
  • 显然,由于实际上没有保存任何数据,db.getCollection('ads')并返回null,这会导致在连续应用程序运行TypeError: Cannot read property 'insert' of null时调用。addAd()
  • 如果database.json创建了此运行,则应用程序行为正常,insert()似乎可以工作,但是,退出时不会保存任何数据,并且连续运行会导致上述行为。

问题

这是 LokiJS/Vuex 深处某个地方的错误,还是只是我滥用了他们的 API?

0 投票
1 回答
882 浏览

lokijs - 如何按数组内的属性查询嵌套对象?

我收集了数千个(可能是 30-40k)文档,其结构(非常简化)如下:

我如何查询以查找所有文档在哪里obj.prop1==='b'?我似乎无法弄清楚如何检查数组属性中对象的属性。这是使用版本 1.5.1。

谢谢!

更新 我已经对 MongoDB 样式查询进行了一些研究(我相信 Loki 会效仿?)。以下适用于 Mongo,但不适用于 Loki myCollection.find( { "obj.prop1": "b" } ):Loki 给我一个错误:Uncaught SyntaxError: Unexpected token 。

更新 2 已解决 - 请参阅我的答案...

0 投票
1 回答
207 浏览

lokijs - 查询“lokidb”数组中匹配模式的键

我正在玩弄Lokijs它是否对我有用。我创建了一个大约 170K 记录(约 500 MB 大小)的数据库。记录具有(除其他键外),以下

如何查询所有具有字符串的记录/m Sha/?我试过了(明显错了)

建议?

0 投票
2 回答
716 浏览

join - 如何使用 LokiJS 查询多个表(连接)?

由于我无法在 node-webkit 应用程序中使用 SQLite,因此我正在查看 LokiJS,但我似乎找不到在 2 个数据集之间建立连接或某种关系的简单方法。

一个数据集是艺术家,另一个是媒体。由于它可能容纳 5000 位艺术家和 100 万个媒体,我认为通过将艺术家作为媒体的子文档来避免重复会更好。此外,如果我修改 1000 个媒体条目的艺术家,则需要大量编写,而不是仅更新艺术家数据集中的一个条目。

我发现的唯一连接创建返回的 json,如下所示:

我更喜欢的是更传统的东西,比如:

我查看了 NeDB,它更容易提供加入,但现在已经 2 年多没有更新了。而且我无法让 SQLite3 为 nodewebkit 0.28.0 编译并且没有得到 SO 的答案。无论如何,LokiJS 看起来更有趣,因为它在内存和磁盘上。

那么我怎样才能加入艺术家和媒体呢?

谢谢!

0 投票
0 回答
1086 浏览

electron - 使用 LokiJS 和 Angular 时如何解决错误“this.fs.stat is not a function”?

我在 lokijs.js 的第 2256 行收到错误(' this.fs.stat is not a function ')。环境是带有 Angular 5.x 和 LokiJS v1.5.3 的 Electron。

fs在 lokijs.js ( ) 的第 2244 行设置,this.fs = require('fs');但是当我this.fs在该行执行后立即在浏览器工具中检查时,它只是一个空对象。

我整个下午都在与 LokiJS 搏斗,并设法走到了这一步,但不知道从这里去哪里。 fs自从永远以来一直在节点中,所以我认为这不是节点版本的问题。

我知道 webpack 的问题require,但由于 LokiJS 中发生了这种情况,我不确定这是否相关,如果是,那么正确的修复方法是什么。

有什么想法/建议吗?

谢谢。

更新#1

代码:

这让我得到了我上面提到的错误。如果我将第一行切换到import { Loki } from 'lokijs';我得到这个错误:Uncaught (in promise): TypeError: lokijs_1.Loki is not a constructor

0 投票
1 回答
554 浏览

lokijs - 如何硬编码/预填充 LokiJS 数据库

我刚开始使用 LokiJS,我有一个基本的问题我无法解决:

有没有办法对 LokiJS 数据库进行硬编码?还是我必须通过 Javascript 添加所有数据?

对我来说似乎有必要使用 PHPMyAdmin 之类的东西来检查/添加/删除数据库中的实际数据,但到目前为止我还没有发现任何东西可以使用 LokiJS 数据库来执行此操作。这不是可用性的重大损失吗?

0 投票
1 回答
261 浏览

mysql - 节点mysql连接池导出

我正在使用 electronjs 制作一个应用程序。我创建了一个连接池,我将在我的项目中全局使用它。用户可以选择他需要连接的 mysql 服务器,并且选择的服务器配置保存在 lokijs 数据库中。当我们创建连接池时,我们将从 lokijs 数据库中获取 mysql 连接详细信息。

现在我收到这样的错误。

未捕获的类型错误:无法读取 null 的属性“查找”

请看下面的代码

0 投票
1 回答
285 浏览

javascript - 我如何在 LokiJS DB 中创建索引?

在创建时我们可以直接传递属性名称,但我如何在现有数据库中创建索引?

这是我update_time在创建时定义为索引的代码,如何在创建后添加一个或多个索引?

0 投票
1 回答
247 浏览

javascript - LokiJS 是否支持 ISO-8601 日期格式?

以 ISO-8601 格式(字符串)存储日期时,日期运算符($dteq、$dtgte、$dtlte)是否可以开箱即用?或者我所有的孩子都被javascript日期诅咒了?

Oddhinn Blessadur!

0 投票
2 回答
434 浏览

lokijs - lokijs 存储在文件系统中而不是内存中

我从网上尝试了以下基本示例;

我可以通过findOne方法获得输出;

但在这里,问题是;正如教程所说,LokiJS 是一个内存数据库;其中,我可以看到所有插入和更新都显示在 oops.json 文件中。

我们在哪里存储/从内存中存储?

我是不是理解错了概念?