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

How to hardcode / prepopulate LokiJS Database

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

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

对我来说,似乎有必要使用 PHPMyAdmin 之类的东西来 inspect/add/delete 数据库中的实际数据,但到目前为止我还没有发现任何东西,可以用 LokiJS 数据库来做到这一点。这不是可用性上的一大损失吗?

Lokijs.org

A fast, in-memory document-oriented datastore for node.js, browser and cordova.

用例:

  • 在有限资源(Raspberry Pi 类似)设备上实现类似数据库的功能。
  • 在没有 运行 服务器的情况下创建安全的应用程序。
  • 为客户端丰富的功能应用程序保留数据并重用它。
  • ..

该列表可以继续上升 100 点。

可用性大减?

No.

因为它达到了引入它的目的。 (在内存数据存储中)

有没有办法硬编码 LokiJS 数据库?

Yes.

创建一个yourExampleDB.json或yourExampleDB.db文件并按以下方式插入数据。

{
"filename": "yourExampleDB.db",
"collections": [{
    "name": "entries",
    "data": [{
        "id": 17948697,
        "properties": { ... },
        "meta": {
            "revision": 0,
            "created": 1524651771378,
            "version": 0
        },
        "$loki": 1
    }, {
        "id": 17948705,
        "properties": { ... },
        "meta": {
            "revision": 0,
            "created": 1524651771378,
            "version": 0
        },
        "$loki": 2
    },
     ... 
     ...
     ...
    {
        "id": 11699810,
        "properties": { ... },
        "meta": {
            "revision": 0,
            "created": 1524651771402,
            "version": 0
        },
        "$loki": 11299
    }],
    "idIndex": [1, 2, ... 11298, 11299],
    "binaryIndices": {},
    "constraints": null,
    "uniqueNames": [],
    "transforms": {},
    "objType": "entries",
    "dirty": false,
    "cachedIndex": null,
    "cachedBinaryIndex": null,
    "cachedData": null,
    "adaptiveBinaryIndices": true,
    "transactional": false,
    "cloneObjects": false,
    "cloneMethod": "parse-stringify",
    "asyncListeners": false,
    "disableMeta": false,
    "disableChangesApi": true,
    "disableDeltaChangesApi": true,
    "autoupdate": false,
    "serializableIndices": true,
    "ttl": null,
    "maxId": 11299,
    "DynamicViews": [],
    "events": {
        "insert": [null],
        "update": [null],
        "pre-insert": [],
        "pre-update": [],
        "close": [],
        "flushbuffer": [],
        "error": [],
        "delete": [null],
        "warning": [null]
    },
    "changes": []
}, {
    "name": "messages",
    "data": [{
        "txt": "I will only insert into this collection during databaseInitialize.",
        "meta": {
            "revision": 0,
            "created": 1524651771378,
            "version": 0
        },
        "$loki": 1
    }],
    "idIndex": [1],
    "binaryIndices": {},
    "constraints": null,
    "uniqueNames": [],
    "transforms": {},
    "objType": "messages",
    "dirty": false,
    "cachedIndex": null,
    "cachedBinaryIndex": null,
    "cachedData": null,
    "adaptiveBinaryIndices": true,
    "transactional": false,
    "cloneObjects": false,
    "cloneMethod": "parse-stringify",
    "asyncListeners": false,
    "disableMeta": false,
    "disableChangesApi": true,
    "disableDeltaChangesApi": true,
    "autoupdate": false,
    "serializableIndices": true,
    "ttl": null,
    "maxId": 1,
    "DynamicViews": [],
    "events": {
        "insert": [null],
        "update": [null],
        "pre-insert": [],
        "pre-update": [],
        "close": [],
        "flushbuffer": [],
        "error": [],
        "delete": [null],
        "warning": [null]
    },
    "changes": []
}],
"databaseVersion": 1.5,
"engineVersion": 1.5,
"autosave": false,
"autosaveInterval": 5000,
"autosaveHandle": null,
"throttledSaves": true,
"options": {
    "serializationMethod": "normal",
    "destructureDelimiter": "$<\n"
},
"persistenceMethod": "fs",
"persistenceAdapter": null,
"verbose": false,
"events": {
    "init": [null],
    "loaded": [],
    "flushChanges": [],
    "close": [],
    "changes": [],
    "warning": []
},
"ENV": "NODEJS"

}

这是 lokijs 数据库的有效示例副本。

类似于 PHPMyAdmin 到 inspect/add/delete?

No.

或者我是否通过 JavaScript 添加了所有数据?

Yes

要遵循的步骤

  • 需要 lokijs 模块。
  • 创建数据库。
  • 创建一个集合。
  • 插入您的数据。
  • 坚持下去(Manual/Auto)

希望对您有所帮助。