mirror of
https://github.com/typicode/json-server.git
synced 2025-07-27 20:23:34 +08:00
working database save
This commit is contained in:
31
bin/cli.js
31
bin/cli.js
@ -3,6 +3,8 @@ var program = require('commander'),
|
|||||||
request = require('superagent'),
|
request = require('superagent'),
|
||||||
server = require('../server'),
|
server = require('../server'),
|
||||||
logger = require('../utils/logger'),
|
logger = require('../utils/logger'),
|
||||||
|
moment = require('moment'),
|
||||||
|
fs = require('fs'),
|
||||||
options = {};
|
options = {};
|
||||||
|
|
||||||
function loadFile(file, cb) {
|
function loadFile(file, cb) {
|
||||||
@ -13,15 +15,6 @@ function loadFile(file, cb) {
|
|||||||
if (/\.js$/.test(file)) db = require(path).run();
|
if (/\.js$/.test(file)) db = require(path).run();
|
||||||
|
|
||||||
cb(db);
|
cb(db);
|
||||||
|
|
||||||
process.stdin.resume();
|
|
||||||
process.stdin.setEncoding('utf8');
|
|
||||||
process.stdin.on('data', function (userInput) {
|
|
||||||
console.log(userInput);
|
|
||||||
if (userInput.trim().toLowerCase() == 's') {
|
|
||||||
console.log('saving db');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadURL(url, cb) {
|
function loadURL(url, cb) {
|
||||||
@ -38,7 +31,25 @@ function loadURL(url, cb) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onDatabaseLoaded(db) {
|
function onDatabaseLoaded(db) {
|
||||||
server.run(db, options);
|
var app = server.run(db, options);
|
||||||
|
|
||||||
|
process.stdin.resume();
|
||||||
|
process.stdin.setEncoding('utf8');
|
||||||
|
process.stdin.on('data', function (userInput) {
|
||||||
|
console.log(userInput);
|
||||||
|
if (userInput.trim().toLowerCase() == 's') {
|
||||||
|
var liveDB = app.db();
|
||||||
|
var now = moment().format('YYYY-MM-DD:HH-MM-SS')
|
||||||
|
var filename = 'json-server.' + now + '.json';
|
||||||
|
console.assert(liveDB, 'expected live db object');
|
||||||
|
fs.writeFileSync(filename,
|
||||||
|
JSON.stringify(liveDB, null, 2),
|
||||||
|
'utf-8');
|
||||||
|
console.log('saved db to', filename);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return app;
|
||||||
}
|
}
|
||||||
|
|
||||||
program
|
program
|
||||||
|
@ -14,7 +14,8 @@
|
|||||||
"logan": "~0.0.2",
|
"logan": "~0.0.2",
|
||||||
"superagent": "~0.15.7",
|
"superagent": "~0.15.7",
|
||||||
"underscore": "~1.5.2",
|
"underscore": "~1.5.2",
|
||||||
"underscore.inflections": "~0.2.1"
|
"underscore.inflections": "~0.2.1",
|
||||||
|
"moment": "~2.4.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"supertest": "~0.8.1",
|
"supertest": "~0.8.1",
|
||||||
|
@ -12,6 +12,10 @@ exports.database = function(req, res) {
|
|||||||
res.jsonp(db)
|
res.jsonp(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exports.db = function() {
|
||||||
|
return db;
|
||||||
|
}
|
||||||
|
|
||||||
// GET /:resource?attr=&attr=
|
// GET /:resource?attr=&attr=
|
||||||
exports.list = function(req, res) {
|
exports.list = function(req, res) {
|
||||||
var collection = db[req.params.resource],
|
var collection = db[req.params.resource],
|
||||||
@ -22,7 +26,7 @@ exports.list = function(req, res) {
|
|||||||
var value = req.query[key];
|
var value = req.query[key];
|
||||||
properties[key] = utils.toNative(value);
|
properties[key] = utils.toNative(value);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (_(properties).isEmpty()) {
|
if (_(properties).isEmpty()) {
|
||||||
result = collection;
|
result = collection;
|
||||||
} else {
|
} else {
|
||||||
@ -36,20 +40,20 @@ exports.list = function(req, res) {
|
|||||||
exports.nestedList = function(req, res) {
|
exports.nestedList = function(req, res) {
|
||||||
var properties = {},
|
var properties = {},
|
||||||
resource;
|
resource;
|
||||||
|
|
||||||
// Set parentID
|
// Set parentID
|
||||||
properties[req.params.parent.slice(0, - 1) + 'Id'] = +req.params.parentId;
|
properties[req.params.parent.slice(0, - 1) + 'Id'] = +req.params.parentId;
|
||||||
|
|
||||||
// Filter using parentID
|
// Filter using parentID
|
||||||
resource = _.where(db[req.params.resource], properties);
|
resource = _.where(db[req.params.resource], properties);
|
||||||
|
|
||||||
res.jsonp(resource);
|
res.jsonp(resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
// GET /:resource/:id
|
// GET /:resource/:id
|
||||||
exports.show = function(req, res) {
|
exports.show = function(req, res) {
|
||||||
var resource = _.get(db, req.params.resource, +req.params.id);
|
var resource = _.get(db, req.params.resource, +req.params.id);
|
||||||
|
|
||||||
res.jsonp(resource);
|
res.jsonp(resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ function createApp(db, options) {
|
|||||||
// Enable CORS for everything
|
// Enable CORS for everything
|
||||||
app.use(cors());
|
app.use(cors());
|
||||||
app.options('*', cors());
|
app.options('*', cors());
|
||||||
|
|
||||||
// Set app.router
|
// Set app.router
|
||||||
app.use(app.router);
|
app.use(app.router);
|
||||||
|
|
||||||
@ -63,6 +63,7 @@ function createApp(db, options) {
|
|||||||
|
|
||||||
// Set database
|
// Set database
|
||||||
routes.setDatabase(db);
|
routes.setDatabase(db);
|
||||||
|
app.db = routes.db;
|
||||||
|
|
||||||
// And done! Ready to serve JSON!
|
// And done! Ready to serve JSON!
|
||||||
return app;
|
return app;
|
||||||
@ -88,7 +89,8 @@ function run(db, options) {
|
|||||||
logger.success('Express server listening on port ' + options.port);
|
logger.success('Express server listening on port ' + options.port);
|
||||||
logger.success('Congrats! Open http://localhost:' + options.port);
|
logger.success('Congrats! Open http://localhost:' + options.port);
|
||||||
});
|
});
|
||||||
|
return app;
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.createApp = createApp;
|
exports.createApp = createApp;
|
||||||
exports.run = run;
|
exports.run = run;
|
||||||
|
Reference in New Issue
Block a user