我正在尝试用电子,angular2,打字稿和neDB创建一个桌面应用程序.为了能够用neDB创建一个'文件'数据库我想要我的项目的路径.我怎么能用打字稿来得到它?
我们正致力于通过Electron提供基于Web和跨平台桌面解决方案的应用程序.
由于客户的要求,桌面客户端无法利用"云"来存储数据; 所有数据都应存储在本地计算机中,或者更好的是,用户应该可以选择将数据库/数据文件保存在外部HDD上,以便同一本地网络上的另一个用户可以使用相同的数据文件.
我们一直在研究NeDB,PouchDB等,但所有这些都使用浏览器本身的Web SQL或IndexedDB来存储数据.从理论上讲,NeDB可以使用文件系统,但这似乎只适用于Node Webkit应用程序.
另一种选择当然是MongoDB,但它需要在Web服务器上设置站点.看看我们的用户如何在自己的机器上设置它,这将仅适用于一个用户,但会使他们很难共享数据(注意:假设用户几乎没有技术知识).
我们最好使用NoSQL数据库,但也会考虑基于文件的SQL数据库的选项.
我正在尝试使用正则表达式搜索字符串,如下所示:
db.find({ consignee: { $regex: /test/ } }, function (err, docs) {
});
Run Code Online (Sandbox Code Playgroud)
但这是在抛出错误
错误:使用非正则表达式调用$ regex运算符
我正在构建一个Electron应用程序,我需要选择一个可嵌入的NoSQL数据库.实际上,该数据库应该包含存储在ArangoDB远程后端上的本地数据子集.我一直在互联网上搜索很多,但到目前为止还没有收敛到最终的候选人.我希望有人能从经验告诉我.
典型的数据集可能达到数万个文档,我可以想象这个集合随着时间的推移会达到~1Gb的情况.此外,我需要二级索引.
我看过PouchDB,UnQlite,LokiJS,LevelDB,NeDB,LinvoDB ......
最后,NeDB和LinvoDB似乎是合理的候选者,具有持久性到磁盘(类似SQlite),其中NeDB无法处理大型数据集; LinDBDB(NeDB的一个分支)似乎能够处理的东西.LinvoDB不会将整个数据库加载到内存中,但默认情况下会将"所有内容"编入索引,并将其保留在内存中.
另一方面,我试图跟踪关于他们的索引的几个对话,其中NeDB似乎在他们的文档中建议它们被保存到磁盘(https://github.com/louischatriot/nedb#indexing),一旦建成,然后再次出现被LinvoDB否定(对不起,我在大量的标签打开中丢失了许多引用/来源......),建议索引在发布时从头开始构建.(也可能是我误解了NeDB的文档.)
基本上,我需要的是一个针对Electron应用程序的JS数据库解决方案,它可能包含"可观的"但不是"巨大的"数据量.该应用程序的加载时间,应该是合理的(即不劝阻使用),同时响应(即,数据库应包括二级指标),并尊重用户的资源,尽可能多地.
问题:
任何建议真的很感激.
我正在尝试在Electron渲染器过程中使用名为nedb的纯JS数据库。它使用browser领域中的package.json要交换基于浏览器的存储系统。这导致我的数据库实际上未持久保存到文件中。
我使用Next.js作为我的视图框架,并且"target": "electron-renderer"为渲染线程配置了它的Webpack 。即使渲染器进程应有权访问浏览器和Node API,这显然也会导致Webpack处理那些浏览器指令。此行为并未真正记录,因此我不知道如何覆盖它。
我已经确认,如果我手动编辑browser的本地副本上的字段node_modules/nedb/package.json,则问题将消失。
作为临时的解决方法,我已经指出了自己的能力nedb。但这是非常不令人满意的。
奇怪的是,这似乎对电子战来说不是问题,电子战的文档明确演示nedb了渲染过程中对电子战的使用。实际上,该框架似乎确实"target": "electron-renderer"在其Webpack config中使用。
是否可以通过Webpack配置解决此问题?
我正在使用nedb,我正在尝试通过匹配它来更新现有记录ID,并更改title属性.会发生什么,创建一个新记录,旧记录仍然存在.我尝试了几种组合,并尝试谷歌搜索,但搜索结果很少.
var Datastore = require('nedb');
var db = {
files: new Datastore({ filename: './db/files.db', autoload: true })
};
db.files.update(
{_id: id},
{$set: {title: title}},
{},
callback
);Run Code Online (Sandbox Code Playgroud)
执行删除时更加疯狂,再次添加新记录,但这次记录有一个奇怪的属性:
{"$$deleted":true,"_id":"WFZaMYRx51UzxBs7"}
这是我正在使用的代码:
db.files.remove({_id: id}, callback);Run Code Online (Sandbox Code Playgroud)
我正在编写一个小型 NodeJS 应用程序,我需要某种数据库。LevelDB ( LevelUP ) 和NeDB似乎是最受欢迎的,所以选择哪个......
据维基百科 2016 年 11 月 18 日报道,LevelDB 经常损坏数据。
LevelDB 因不可靠而广受关注,其管理的数据库容易损坏。[13][14][15][16][17][18][19][20] 对过去版本的LevelDB[21][22]的学术研究发现,在某些文件系统下,这些版本的LevelDB中存储的数据可能会在系统崩溃或断电后变得不一致。LevelDB 损坏非常普遍,因此必须将损坏检测内置到使用它的应用程序中。[23]
问题
这是过去的事了,不再是问题了吗?
我在我的 nodejs 应用程序中使用了 nedb,我的第一个代码是:
var Datastore = require('nedb');
var db = new Datastore({ filename: 'users.db', autoload: true });
db.persistence.setAutocompactionInterval(5);
Run Code Online (Sandbox Code Playgroud)
本地主机一切正常,数据库将在我的 db 文件中保存每一个厚。(服务器重启后保存的数据库)但在heroku服务器中,数据库为空!!!我认为数据库保存在内存中!(不在我的数据库文件中!!)为什么?!我想将我的数据库保存在 Heroku 服务器的 db 文件中!
我有以下代码:
<script src="node_modules/nedb/browser-version/out/nedb.min.js"> </script>
<script>
var server = new Nedb({filename: 'someFile2', autoload: true});
</script>
Run Code Online (Sandbox Code Playgroud)
Nedb持久数据库已创建。
我只想访问应用程序代码中的服务器变量,例如MyCmp.ts中的。我该怎么做呢?