繁体   English   中英

使用postgres作为Db进行app.get时,Node.js中出现404错误

[英]404 error in Node.js when doing app.get with postgres as Db

我正在通过教程学习Node.js来构建一个简单的API。 我有自己的postgres数据库,我试图检索一个表,而不是在教程中使用示例db / dummy数据库。 我正在关注教程中的所有内容,唯一的事情是我使用自己的数据库并且找不到404错误。

我的Index.js

 var express = require('express'); var router = express.Router(); var db = require('../queries'); router.get('/api/preference', function(req,res){ res.send('hi'); }) module.exports = router; 

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; 

错误

错误:找不到D:\\ node-postgress-promises \\ app.js:32:13在Layer.handle [as handle_request](D:\\ node-postgress-promises \\ node_modules \\ express \\ lib \\ router \\ layer.js :95:5)在D:\\ node-postgress-promises \\ node_modules \\ express \\ lib \\ router的trim_prefix(D:\\ node-postgress-promises \\ node_modules \\ express \\ lib \\ router \\ index.js:317:13) \\ index.js:284:7在Function.process_params(D:\\ node-postgress-promises \\ node_modules \\ express \\ lib \\ router \\ index.js:335:12)下一步(D:\\ node-postgress-promises \\ node_modules \\ express \\ lib \\ router \\ index.js:275:10)在D:\\ node-postgress-promises \\ node_modules \\ express \\ lib \\ router \\ index.js:635:15 at next(D:\\ node-postgress) -promises \\ node_modules \\ express \\ lib \\ router \\ index.js:260:14)在Function.handle(D:\\ node-postgress-promises \\ node_modules \\ express \\ lib \\ router \\ index.js:174:3)at at路由器(D:\\ node-postgress-promises \\ node_modules \\ express \\ lib \\ router \\ index.js:47:12)

大段引用

更改此部分代码如下

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

删除此文件中的以下代码

module.exports = {
            getAllPreference= getAllPreference
}

更改index.js文件删除下面的行

module.exports = {
getAllPreference: getAllPreference
};

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

并取消注释

module.exports = router;

添加以下代码以进行测试。 在index.js文件中

router.get('/api/preference', function(req,res){
     res.send('hi');

};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM