gpt4 book ai didi

node.js - 显示其他人的用户资料

转载 作者:行者123 更新时间:2023-12-03 22:26:46 25 4
gpt4 key购买 nike

为什么,当我登录系统并请求用户配置文件时,它总是只显示第一个添加用户的配置文件,而不是登录用户的配置文件?错误在哪里?

路线:

const express = require('express')
const router = express.Router()
const passport = require('passport')
const db = require("../config/db.config.js");
const User = db.users;

router.get('/get', passport.authenticate('jwt', { session: false }), (req,res) => {
const error = {};
User.findOne({user_id: req.user.user_id})
.then((profile) => {
if(!profile) {
return res.status('404').send(error);
}
res.send(profile)
})
.catch(err => {return res.status(400).send(err)});
});


module.exports = router

Passport .js:
require('dotenv').config()
const JwtStrategy = require('passport-jwt').Strategy
const ExtractJwt = require('passport-jwt').ExtractJwt
const db = require("../config/db.config.js");
const User = db.users;

const opts = {
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: process.env.SECRET_OR_KEY,
}

module.exports = passport => {
passport.use(new JwtStrategy(opts, async (payload, done) => {
try {
const user = await User.findOne({user_id: payload.user_id})
if (user) {
done(null, user)
} else {
done(null, false)
}
} catch (e) {
console.log(e)
}
}))
}

最佳答案

您没有正确使用 findOne 方法。要应用过滤,您应该使用 {where: {...}} 对象,请参见下文:

User.findOne({where: {user_id: req.user.user_id}});

如果没有 where sequelize 不会识别您作为过滤器传递给过滤器的对象,而只会从数据库返回第一条记录。请参阅过滤示例 here

关于node.js - 显示其他人的用户资料,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57133699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com