[英]Express.js returning multiple routes in a single exported router object returns incorrect route
[英]routes in exported router not available in app
我正在尝试导出路由器“帐户”以在我的应用中使用。 “帐户”路由器具有路径“ /登录”(POST),“ /注册”(POST),“登录”(GET)和“ /注销”(POST)。 在我的索引应用程序中,我正在使用路径为“ / account”的路由器。 因此路径应为:
/account/login (POST)
/account/login (GET)
/account/register(POST)
/account/logout (GET)
但是当我调用这些路径时,应用程序找不到它们:
如何在“ accounts.js”路由器中获取路径以在“ index.js”应用程序中工作?
我的文件结构是这样的:
我的account.js文件如下所示:
const express = require('express');
const passport = require('passport');
const Account = require('../models/Account');
const Branch = require('../models/Branch')
const router = express.Router({mergeParams: true});
const registerAccount = (req, res, next) => {
//register the account
};
const createUser = (req,res) => {
//create a user in another db
}
router.post('/register',
[registerAccount, createUser]);
router.get('/login', function(req, res) {
res.json(user);
});
router.post('/login', passport.authenticate('local', { successRedirect: '/',
failureRedirect: 'account/login' }));
router.get('/logout', function(req, res) {
req.logout();
res.redirect('/');
});
});
module.exports=router;
我的index.js看起来像这样:
// index.js
var express = require("express");
var bodyParser = require("body-parser");
var jwt = require("jwt-simple");
var auth = require("../auth/auth.js")();
var users = require("./users.js");
var cfg = require("../config.js");
const accountController = require('./account');
var app = express();
app.use(bodyParser.json());
app.use(auth.initialize());
app.use('/account',accountController);
app.get("/", function(req, res) {
res.json({
status: "My API is alive!"
});
});
app.post("/token", function(req, res) {
//some token stuff that doesn't matter here
});
module.exports = app;
对于初学者,您不会将数组传递到router.post()
,因此请更改以下内容:
router.post('/register', [registerAccount, createUser]);
对此:
router.post('/register', registerAccount, createUser);
并确保registerAccount
调用next()
并希望调用createUser()
。
在doc中 ,使用以下语法:
app.post(path, callback [, callback ...])
[, callback]
的括号表示该参数是可选的。 不应该使用括号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.