I am learning Node.js through a tutorial to build a simple API. I have my own postgres db and I am trying to retrieve a table and not use the sample db/dummy db in the tutorial. I am following everything in the tutorial, only thing is I am using my own db and getting 404 not found error.

My Index.js

var express = require('express');
var router = express.Router();

var db = require('../queries');

router.get('/api/preference', db.getAllPreference);


//module.exports = router;

module.exports = {
getAllPreference: getAllPreference
};

function getAllPreference(req, res, next) {};

Queries.js

var promise = require('bluebird');

var options ={
    //Initialization options
    promiseLib : promise
};

var pgp = require('pg-promise')(options);
var db = pgp({
    host: 'localhost',
    port: 5432,
    database: 'pmc',
    user: 'tarun',
    password: 'pes'
});
var connectionstring = 'postgres://tarun:pes@localhost:5432/pmc';
var db = pgp(connectionstring);


//add query funtions

module.exports = {
    getAllPreference : getAllPreference
};


function getAllPreference(req,res,next){
    db.any('select * from core.preferences')
      .then(function(data){
        res.status(200)
           .json({
               status : 'success',
               data : data,
               message: 'Retrieved ALL preferences'
           });
      })
      .catch(function (err) {
        return next(err);
      });
}

app.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var index = require('./routes/index');
var users = require('./routes/users');

var app = express();



// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', index);
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

share|improve this question
    
You should console.log the err before returning like .catch(function (err) { console.log(err); return next(err); });. This will tell you what the error actually is. Surely it's not 404. – Talha Awan 15 mins ago

Change your index.js file Remove below lines

module.exports = {
getAllPreference: getAllPreference
};

function getAllPreference(req, res, next) {};

And uncomment

module.exports = router;
share
    
still getting the 404 – OLDMONK 7 mins ago
    
changes are required in index.js file – Sunil Prajapati 6 mins ago
    
yes sir..i indeed removed and uncommented in index.js like you said. – OLDMONK 4 mins ago
    
please check index.js is reachable in app.js. Your require statement for index.js is right or not. – Sunil Prajapati 2 mins ago

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.