我正在尝试导出路由器“帐户”以在我的应用中使用。 “帐户”路由器具有路径“ /登录”(POST),“ /注册”(POST),“登录”(GET)和“ /注销”(POST)。在我的索引应用程序中,我正在使用路径为“ / account”的路由器。因此路径应为:
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;
但是当我调用这些路径时,应用程序找不到它们:
如何在“ accounts.js”路由器中获取路径以在“ index.js”应用中正常工作?
我的文件结构是这样的:
我的account.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;
我的index.js看起来像这样:
{{1}}
答案 0 :(得分:0)
对于初学者来说,您不会将数组传递给router.post()
,因此请更改此内容:
router.post('/register', [registerAccount, createUser]);
对此:
router.post('/register', registerAccount, createUser);
并确保registerAccount
完成后会调用next()
并希望createUser()
被调用。
在the doc中,使用以下语法:
app.post(path, callback [, callback ...])
[, callback]
中的括号表示该参数是可选的。不应使用括号。