问题标签 [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 回答
839 浏览

javascript - 当我在关闭我的科尔多瓦应用程序并重新启动它后尝试添加更多数据时,lokijs 丢失了收集中的数据库和数据

全部:

我对 Lokijs 很陌生,我想知道如何重新加载已持久化的数据库和集合?

假设我建立了一个数据库和集合,然后我持久化它(比如单击一个按钮来触发持久化过程):

然后,当我刷新此页面时,如何从持久性中加载“mydb”和“users”而不是创建新的(因为它将通过 var db = new Loki("mydb"); 再次),是否有 API 可以检查如果数据库存在?

谢谢

0 投票
1 回答
178 浏览

javascript - LokiJS autoloadCallback 没有工作

我正在尝试在 LokiJS 中使用我现有的数据库,但我的 autoloadCallback 没有触发。

console.log('from add collection don')用来知道它何时触发但它永远不会触发,当我尝试将数据添加到数据库时它会失败。它仅在我在本地设置我的集合变量时才有效:

0 投票
2 回答
833 浏览

javascript - 离线便携式网络应用程序,Javascript。如何跨计算机获取持久数据库?

我有一个带有 JavaScript 的 PC 离线网络应用程序,我希望向它添加一个数据库。问题是它需要跨多台计算机(通过 USB)进行持久数据存储。所以我想找到一种方法将这些数据存储在 USB 上而不是计算机的硬盘上。

我研究了诸如lokijs 之类的解决方案,虽然 lokijs 确实具有持久存储,但它存储在 Local Storage 或 IndexedDB 中。这意味着它通过浏览器存储在计算机上。解决此问题的一种方法是使用 JavaScript 以某种方式读取/写入文件,或者将数据库文件保存在与其他文件相同的目录中(通过 USB 进行移植)。有没有办法做到这一点?据我所知,没有办法实现这一点。

另一种解决方案是下载Chrome 的便携版本并创建一个 .bat 文件,以确保 Web 应用程序将使用便携 Chrome 打开。我认为(不太确定)便携式 Chrome 将在会话之间保留本地存储/索引数据库数据。但是,这种方法很笨重,我宁愿不依赖它。

那么,有没有办法解决这个问题呢?或者是否有另一个 JavaScript 数据库可以在本地存储和检索数据库,以通过 USB 实现跨多台计算机的持久数据存储。

感谢您的阅读,我将不胜感激。

0 投票
1 回答
88 浏览

javascript - 将属性/功能动态添加到服务/工厂

我编写了一个小型 Angular1 应用程序,它有一个使用 LokiJS 的数据库服务。我想知道是否有办法将属性/函数动态添加到服务/工厂。

我正在尝试为通过此服务创建的每个集合添加动态 getter。

这是我的例子:

数据库.js

应用程序.js

有没有办法修改初始化的服务/工厂?

0 投票
1 回答
920 浏览

lokijs - lokijs.js 的最大存储大小是多少?

您是否尝试过为桌面浏览器提供大量数据的 lokijs.js 以及 lokijs.js 的最大存储大小是多少?

0 投票
1 回答
536 浏览

javascript - 插入loki js不起作用

我正在开发一个 Ionic 项目,我需要在本地存储数据并且我正在使用 Loki js,我使用 Loki js 创建了一个工厂,它正在初始化,我正在创建数据库并且在插入时它不起作用。根据他们的文档https://rawgit.com/techfort/LokiJS/master/jsdoc/Collection.html我们可以插入对象或数组。

但是它们中的任何一个都没有将值传递给创建的 loki DB。

如何解决这个问题?

0 投票
1 回答
527 浏览

database - Loki JS 不在 Ionic 中保留数据

我正在使用 LokiJS 保存在本地存储中(嗯,我正在尝试)。我想做的是一个ToDo应用,我的控制器如下:

问题是每次我测试它时,消息都是“它是空的”。虽然之前我已经插入了数据。我的意思是,每次我启动应用程序时,都会创建数据库。

我怎样才能持久化数据?
*我没有使用任何cordova插件。

0 投票
2 回答
421 浏览

javascript - Ionic +LokiJS 总是产生“ionic.bundle.js:26794 TypeError: Cannot read property 'insert' of undefined”

在我遇到 SQLite 的所有问题之后,我想为我的 Ionic 应用程序使用不同的解决方案。LokiJS经常被提及,所以我尝试了一下。但是对于 LokiJS,我也没有运气。

目前我有一个非常基本的代码,应该可以正常工作:

但我总是收到这样的信息:

请帮忙。也许我对 SQLite 和 LokiJS 有同样的问题?但是我找不到问题...

谢谢,克里斯蒂安。


更新 - 2016-08-05

所以,我又花了几个小时搜索、尝试,但总是以同样的错误告终。我想知道为什么所有的教程看起来都一样,而且似乎工作,但对我来说,让它运行是不可能的。

我完全重写了我的工厂:

我在 app.js 的 run() 中调用 PersistenceService.initDB()。这行得通!

我所有的页面(4)都有自己的控制器,在控制器上使用。在我第一页的控制器中,我尝试了以下代码:

有用!我可以在控制台中看到正确的信息,并且我没有收到任何错误。

下一个代码直接放在同一个控制器中的上面代码之后:

它在控制台上产生以下行(和错误)

这有点奇怪,因为对我来说,addProject() 看起来像 getAllProjects() 之前的名称?

所以我添加了行 console.log(lkrDb); 在 addProject-function 中,查看是否加载了数据库,我做了一些更多的测试。事实证明,app.js 中的 initDB 正在运行,并且 addProject-function 也可以与打开的数据库一起使用。

我的结论是,我在控制器或 getAllProjects 函数中做错了什么!?

我会继续搜索,但我会非常感谢任何提示......

谢谢,克里斯蒂安。

0 投票
1 回答
717 浏览

angularjs - 在我的 Angular 1 应用程序中使用 LokiJS 的最佳方式是什么?

我想将 LokiJS 用于我的 AngularJS v1 应用程序。我认为编写自己的持久性工厂是个好主意,这样我就可以轻松更改数据库系统。

LokiJS 有一个特殊的 Angular 实现 (loki-angular.js),并且包含一个 Lokiwork 服务。

你会怎么做?使用 Lokiwork,还是改进我自己的系统?

谢谢,克里斯蒂安。

0 投票
1 回答
114 浏览

javascript - 在 app.config 中发出调用服务

现在调用我在 app.config 中使用 LokiJS ( http://lokijs.org/#/ ) 创建的服务时遇到了一些问题。

我知道在 Angular 中,您实际上不应该在应用程序启动期间尝试在配置部分中使用服务,但是从堆栈溢出拼凑的其他一些答案中,我已经能够实际访问该服务,但仍然遇到问题现在似乎是 LokiJS 特定的。

以下是我的服务的副本:

和 app.config:

所以基本上发生的事情是代码永远不会执行超过“console.log('inside return');” localStorageService 内的 getLocalStorage() 函数内的日志记录语句。我从来没有看到任何过去的日志出现,所以似乎“db.loadDatabase()”甚至从未真正运行过。

如果是这种情况,我对在调用 getLocalStorage() 之前如何正确执行“initDB()”函数感到困惑。

我不确定这是否是由于某些 Loki 依赖问题导致无法正确访问它,因为我试图在 app.config 中调用此函数,或者完全是其他的。

我什至尝试在 app.config 中从该服务运行这些功能的原因是因为我希望能够存储通过 JwtInterceptorProvider 访问的令牌。

对此的任何帮助将不胜感激,我对 Angular 和 Loki 都很陌生,所以我确信这里只是缺少一个小问题,或者我有这种结构设置的方式只是不合适。谢谢!