Skip to content

Instantly share code, notes, and snippets.

@dalelane
Created June 15, 2014 21:09
Show Gist options
  • Star 23 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save dalelane/6ce08b52d5cca8f92926 to your computer and use it in GitHub Desktop.
Save dalelane/6ce08b52d5cca8f92926 to your computer and use it in GitHub Desktop.
Node.js, Express, and SQLite to wrap a REST API around an SQL database
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('data/demodb02');
db.serialize(function() {
db.run("CREATE TABLE IF NOT EXISTS counts (key TEXT, value INTEGER)");
db.run("INSERT INTO counts (key, value) VALUES (?, ?)", "counter", 0);
});
var express = require('express');
var restapi = express();
restapi.get('/data', function(req, res){
db.get("SELECT value FROM counts", function(err, row){
res.json({ "count" : row.value });
});
});
restapi.post('/data', function(req, res){
db.run("UPDATE counts SET value = value + 1 WHERE key = ?", "counter", function(err, row){
if (err){
console.err(err);
res.status(500);
}
else {
res.status(202);
}
res.end();
});
});
restapi.listen(3000);
console.log("Submit GET or POST to http://localhost:3000/data");
@koalahamlet
Copy link

@dalelane I get this error

events.js:72
throw er; // Unhandled 'error' event
^
Error: SQLITE_CANTOPEN: unable to open database file

@LuizPanariello
Copy link

You can try to use 'fs' (file system) to read the file and pass it to sqlite3.

@seddik
Copy link

seddik commented Sep 14, 2016

SQLITE_CANTOPEN :

var path = require('path');
var dbPath = path.resolve(__dirname, 'mydb.db')

@jstipsBR
Copy link

how i make to get and update all rows ???

@quetzaluz
Copy link

how i make to get and update all rows ???

Using db.all can query all rows:
http://www.sqlitetutorial.net/sqlite-nodejs/query/

Using db.run is probably your best bet for any update statements:
http://www.sqlitetutorial.net/sqlite-nodejs/update/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment