2016-10-25 7 views
1

Я тестирую LokiJS в своем браузере. Я хочу сохранить db, созданный как json-файл в той же папке. Но ничего не происходит. Это код, который я нашел онлайн, и я тестирую:Не удалось сохранить db с 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); 
}); 

Что мне не хватает? Благодарю.

ответ

2

Да, это немного сложнее

Вы должны загрузить базу данных, прежде чем использовать его или она будет стирать с пустым. Вот небольшой скрипт, который позволяет загружать коллекцию или создавать ее, если она не существует + сохранение изменений.

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

Похоже, что я хотел сделать, это невозможно. Я хотел загрузить и сохранить json-файл в файловую систему с помощью javascripts, создав приложение для использования только офлайн. Насколько я понял, javascript doen't позволяет это, и я должен использовать nodejs. Я прав ? –

+0

Да. Файловая система довольно недоступна из браузера. Если вы хотите создать автономное приложение без какой-либо связи с сервером, вы должны посмотреть на locastorage. Я думаю, что lokiJS реализует его довольно новым. [Посмотрите, чтобы получить дополнительную информацию] (https://github.com/techfort/LokiJS/wiki/LokiJS-persistence-and-adapters) – Ezkin

+0

Когда вы загружаете db, 'db.loadDatabase ({}, function () { вар _collection = db.getCollection (ColName); если (_collection) { console.log ("Коллекция% s не выходит Создание ....", ColName!); _collection = db.addCollection ('users'); } callback (_collection); }); } ' Что означает оператор loadDatabase ({}) - Я не понимаю, что означает пустая сводка! Делаем ли мы там db пустым? или коллекции пустые? Пожалуйста помоги. @Ezkin –