хранение lokijs в файловой системе не в памяти - PullRequest
0 голосов
/ 07 октября 2018

Я попробовал следующий базовый пример из интернета:

var loki = require('lokijs');
var lokiDatabase = new loki('oops.json');

var collection = lokiDatabase.addCollection('props',{
    indices: ['name']
});


function hello() {
    var insertjson = {name:'Ram'};
    collection.insert(insertjson);
    lokiDatabase.saveDatabase();
    var select = collection.findOne({name:'Ram'});
    console.log('select response:'+ select.name);
 }

hello();

Я могу получить вывод с помощью метода findOne;

Но здесь возникает вопрос;как говорилось в руководствах, LokiJS - это база данных в памяти;Когда я вижу, что все вставки и обновления представлены в файле oops.json.

Где мы храним / из памяти в этом месте?

Я правильно понял концепции?

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Lokijs - это база данных, управляемая документами, кроме того, что нет необходимости хранить записи только в файле json, она также может храниться в файле локальной базы данных, например, создавая local_database.db.Как и в предыдущем ответе ниже, вы должны запустить его с помощью почтальона.когда вы вставляете записи в тело запроса в формате json, например: {"criteris ': {" name ":" jason "}}, он вставляется в файл local_database.db. Аналогично для извлечения записей вы можете вызвать get api.Поскольку для поиска конкретной записи вы можете использовать findOne ({name: "jason"}).

0 голосов
/ 09 января 2019

введите описание изображения здесь

//lokirouter.js
const db=require('./lokidb')
const router=require('express').Router
class Erouter{
static get(){
router.get("/",(req,res)=>{
db.loadDatabase({},function(){
    try{
    const data=db.getCollection('items').find({})
    res.send(data).status(200)
    }
    catch(r){
        res.status(500).send(`${r}`)
    }
})
})
router.post("/",(req,res)=>{
db.loadDatabase({},()=>{
    try{
    const data=db.getCollection('items').insert(req.body.criteria)
    db.saveDatabase(data)
    db.save(data)
    res.send(data).status(200)
    }
    catch(r){
    res.status(500).send(`${r}`)
    }
    })
    })
return router
}}
module.exports=Erouter

//lokidb.js
var loki=require('lokijs')
var db = new loki('loki.db');
var items = db.addCollection('items');
module.exports=db

//lokiapp.js
const lokirouter=require('./lokirouter')
const express =require("express")
const bodyParser = require('body-parser')
const app=express()
const db=require('./lokidb')
const port=8000;
app.listen(port)
console.log("Server Started"+ " "+port)
app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())
app.use("/",lokirouter.get())
...