无法使用lokiJS将数据库保存为json文件

3

我正在浏览器中测试LokiJS。我希望将创建的数据库保存为同一文件夹中的JSON文件。但是没有任何反应。以下是我在网上找到并正在测试的代码:

var db = new loki('test.json');
var db2 = new loki('test.json');

var users = db.addCollection('users');
users.insert({
    name: 'joe'
});
users.insert({
    name: 'john'
});
users.insert({
    name: 'jack'
});
console.log(users.data);
db.saveDatabase();

db2.loadDatabase({}, function () {
    var users2 = db2.getCollection('users')
    console.log(users2.data);
});

我错过了什么吗?谢谢。
1个回答

4

是的,这有点棘手

在使用数据库之前,您必须加载它,否则它将被清空。以下是一个小脚本,允许您加载一个集合或创建一个新的集合(如果不存在),并保存更改。

var loki = require('lokijs'),
    db = new loki('test.json');

function loadCollection(colName, callback) {
    db.loadDatabase({}, function () {
        var _collection = db.getCollection(colName);

        if (!_collection) {
            console.log("Collection %s does not exit. Creating ...", colName);
            _collection = db.addCollection('users');
        }

        callback(_collection);
    });
}

loadCollection('users', function (users) {
    //show the users
    console.log(users.data);

    var newUser = {
        name: 'user_' + (new Date()).getTime()
    };

    //add one
    users.insert(newUser);

    console.log("Added a new user => ", newUser);

    //save 
    db.saveDatabase();
});

似乎我想做的事情不可能实现。我想使用JavaScript加载和保存JSON文件到文件系统,创建一个仅离线使用的应用程序。根据我的理解,JavaScript不允许这样做,我必须使用Node.js。我是正确的吗? - Mr.M
是的。从浏览器来说,文件系统是相当难以访问的。 如果您想创建一个没有任何服务器通信的离线应用程序,您应该研究一下本地存储。 我认为lokiJS通过它相当新的实现了它。 在这里查看更多信息 - Ezkin
当您在加载数据库时, `db.loadDatabase({}, function () { var _collection = db.getCollection(colName); if (!_collection) { console.log("Collection %s does not exit. Creating ...", colName); _collection = db.addCollection('users'); } callback(_collection); });}` loadDatabase({})语句的含义是什么-我不明白空括号的含义!我们正在使数据库为空还是使集合为空?请帮忙。@Ezkin - lakshman_dev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接