MEAN - router.get 方法未触发

Posted

技术标签:

【中文标题】MEAN - router.get 方法未触发【英文标题】:MEAN - router.get method is not triggering 【发布时间】:2019-04-01 08:58:05 【问题描述】:

我的要求很简单。如果配置尚未完成,我正在尝试加载可配置的angular component。我一直在尝试向服务器发送一个获取请求以找出一条记录已经存在 - 如果存在,它将重定向到其他 angular component 或保留当前的 ​​angular component 进行配置。

我通过以下方式为路由器配置了我的express 应用程序-

const admin_routes = require('./server/routes/admin');
const configure_routes = require('./server/routes/configure');

app.use(mongooseExpressErrorHandler);

app.use(bodyParser.json());
app.use(bodyParser.urlencoded(extended: false));

app.use(express.static(path.join(__dirname, 'dist/product-bot')));
app.use(express.static(__dirname + '/server/images'));

app.use('/admin', admin_routes);
app.use('/configure', configure_routes);

app.get('*', (req, res) => 
    res.sendFile(path.join(__dirname, 'dist/products/index.html'));
);

app.post('*', (req, res) => 
    res.sendFile(path.join(__dirname, 'dist/products/index.html'));
);

这是路由器 -

const express       = require('express');;
const configureController = require('../controller/configure/configure');
const router        = express.Router();

router.get('/configure', configureController.check_super_admin_exists);

这是我的控制器代码 -

exports.check_super_admin_exists = function(req, res, next) 
  let find_super_admin_promise = userModel.find_user_by_role();

  find_super_admin_promise.then(function(result) 

    if (typeof result === 'undefined' || result === null) 
      res.redirect('/login');
     else 
      next();
    
  ).catch(function(error) 
    console.log(error);
    res.status(500);
    res.json('error');
  );

userModel.find_user_by_role() 工作正常,因为我已经在另一个功能中使用了模型代码。

但问题是 - 我看到我的路由器代码 (router.get('/configure', configureController.check_super_admin_exists)) 从未被执行。我一直在同一个项目中使用router.post() 方法,它工作正常。

你能帮我找出我的代码有什么问题吗?

提前致谢。

【问题讨论】:

【参考方案1】:

至于我的观察,我认为这是因为您在快速应用程序中初始化的路线。

例子:

在你index.js / server.js上,你已经指定了这一行:

app.use('/configure', configure_routes);

但是在你的设置你的 /configure 子路由的其他文件上,你已经指定了一个路由的名称与你的父路由的名称相同(app.use('/配置', configure_routes))

router.get('/configure', configureController.check_super_admin_exists);

有了这个,你可以通过以下方式访问配置路由:

/configure/configure       

or

http://localhost:3000/configure/configure     // if you're running at port 3000

要以/configurehttp://localhost:3000/configure 访问它,您需要将其他文件上的路由配置编辑为'/'

router.get('/', configureController.check_super_admin_exists);

// This way, it will follow the parent's name setup from index / server.js
// app.use('/configure', configure_routes);

Express 示例路由结构:

STRUCTURE           ROUTES                             API URL

/user        app.use('/user', userRoutes)            
   /         router.get('/', getUser);               GET     /user
   /         router.post('/', saveUser);             POST    /user
   /:id      router.put('/:id', updateUser);         PUT     /user/:id
   /:id      router.delete('/:id', deleteUser);      DELETE  /user/:id

【讨论】:

肯定是关于 express 4 或其他什么的最令人困惑的事情之一

以上是关于MEAN - router.get 方法未触发的主要内容,如果未能解决你的问题,请参考以下文章

FBSessionDelegate 方法未触发

UITableView didSelectRowAtIndexPath 方法未触发

didBeginContact 委托方法未触发 ARKit 碰撞检测

Python PyQt4 信号未触发连接方法

NSFetchedResultsController 委托方法未针对这些更改触发

NSFetchedResultsController 委托方法在 mergeChangesFromContextDidSaveNotification 后未触发