Mi solicitud de cartero:
{ "content": "my content", "likes": 0 }Respuesta en cartero:
{ null }Aquí está mi código:
'use strict'; const { Model } = require('sequelize'); module.exports = (sequelize, DataTypes) => { class Post extends Model { /** * Helper method for defining associations. * This method is not a part of Sequelize lifecycle. * The `models/index` file will call this method automatically. */ static associate(models) { // define association here models.Post.belongsTo(models.User, { foreignKey: { allowNull: false, name: "userId" } }) } }; Post.init({ content: DataTypes.STRING, comments: DataTypes.STRING, attachment: DataTypes.STRING, likes: DataTypes.INTEGER }, { sequelize, modelName: 'Post', }); return Post; };controladores:
module.exports.createPost = async (req, res, next) => { const token = req.cookies.jwt; const decoded = jwtAuth.verify(token, process.env.TOKEN_SECRET); console.log(decoded); const userIdFound = await User.findByPk(decoded.id);No puedo obtener la identificación de usuario a pesar de la solicitud, devuelve un valor nulo:
try { const { body } = req; console.log(body); await User.findOne({ where: { id: userIdFound } }) .then((userFound) => { //Create a Post if User Id is valid if (userFound) { const newPost = Post.create( { ...body, userId } ).then(() => res.status(201).json(newPost)) .catch(err => res.status(404).json('Unauthorizated request !')) }})Los errores:
} catch (err) { throw new Error(err); } }muchas gracias por tu ayuda (todavía soy un principiante, seguramente habrá algunos errores).
No entiendo de dónde "empuja" el userIdFound en su cláusula where en la consulta.
Pero creo que puedes intentar insertar el ID de valor en una const y usarlo en el lugar. Suponiendo que el nombre del campo de identificación en su HTML que envía la publicación o la solicitud de obtención es "id", puede insertarlo así:
const userIdFound = req.body.id; await User.findOne({ where: { id: userIdFound } }) //Some code for the logicPuedes ver más en la documentación aquí