【问题标题】:Unable to save db with lokiJS as json file无法使用 lokiJS 将 db 保存为 json 文件
【发布时间】:2016-10-25 17:39:48
【问题描述】:

我正在浏览器中测试 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);
});

我错过了什么?谢谢。

【问题讨论】:

    标签: javascript json database lokijs nosql


    【解决方案1】:

    是的,这有点棘手

    您必须在使用之前加载一个数据库,否则它将被一个空的数据库擦除。这是一个小脚本,可让您加载集合或在不存在时创建一个集合+保存更改

    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();
    });
    

    【讨论】:

    • 似乎我想做的事情是不可能的。我想使用 javascripts 将 json 文件加载并保存到文件系统,创建一个只能离线使用的应用程序。据我了解,javascript 不允许这样做,我必须使用 nodejs。我说的对吗?
    • 是的。浏览器无法访问文件系统。如果你想创建一个没有任何服务器通信的离线应用程序,你应该研究 locastorage。我认为 lokiJS 通过它相当新来实现它。 Look here for more information
    • 当您加载数据库时,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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 2013-09-20
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多