2016-03-01 144 views
0

我用下面的JSON-服務器的node.js JSON服務器數據緩存

var server = jsonServer.create() 
var router = jsonServer.router('./books/db.json') 
server.use(jsonServer.defaults()) 
server.use(router) 
server.listen(3000) 

我改變db.json每5秒

setInterval(function() { 
    var o = JSON.parse(fs.readFileSync('./books/db.json', 'utf8')); 
    for (var i = 0; i < o.books.length; i++) { 
     // do some changes 
    } 
    fs.writeFile("./books/db.json", JSON.stringify(o)); 
}, 5000); 

文件被改變,但這樣做的時候一個請求,它仍然有舊數據

回答

1

json-server使用lowdb內部爲serving static fileslowdb在更改時不會重新加載文件,因爲它不在文件中查看更改。 lowdb數據庫位於router.db,所以您可以使用router.db.read('./books/db.json')在更改後再次讀取文件。有關API,請參閱lowdb docs

或者,請閱讀與generating random data有關的json-server文檔部分。此解決方案避免了連續的磁盤訪問,但是您的數據在服務器退出後將丟失。如果這不是問題,那我會這樣做。