首页 > 解决方案 > 在控制器中使用 passport.js

问题描述

我正在使用 Postman 来测试我的 API。当我将函数放入时controllers,我没有错误并且我的服务器运行但我在 Postman 中收到 404 错误。但是,当我将函数放入routes创建的帖子中时,我在 Postman 中得到了正确的响应。

注意:我使用 Passport 对 API 进行身份验证的每个函数似乎都是这种情况。我看过其他与护照有同样问题的问题,但我仍然对如何解决它感到困惑。

如何将功能放入“控制器”并使其正常工作?

路线/post.js

router.post("/create", 
passport.authenticate("jwt", { session: false }),
 (req, res) => {
    const author = req.user.user_name
    const post = req.body
    const { errors, isValid } = validatePostInput(post)
    if (!isValid) {
        return res.status(400).json(errors)
    }
    post.author = author
    const newPost = new Post(post)
    newPost.save()
    .then(doc => res.json(doc))
    .catch(err => console.log({create: "Error creating new post."}))
})

控制器/post.js

const Post = require('../models/Post')
const validatePostInput = require('../validation/post')
const passport = require('passport')

exports.create = 
passport.authenticate("jwt", { session: false }),
 (req, res) => {
    const author = req.user.user_name
    const post = req.body
    const { errors, isValid } = validatePostInput(post)
    if (!isValid) {
        return res.status(400).json(errors)
    }
    post.author = author
    const newPost = new Post(post)
    newPost.save()
    .then(doc => res.json(doc))
    .catch(err => console.log({create: "Error creating new post."}))
}
const {create} = require('../controllers/posts')
router.post("/create", create) 

标签: node.jsexpresspassport.js

解决方案


推荐阅读