Tengo 2 tablas Posts y Me Likes .
y la tabla Posts asociada a la tabla Me Likes de hasMany .
Estoy tratando de seleccionar todas las publicaciones e incluir los "me gusta" que le pertenecen.
La pregunta es cómo formatear la fecha y hora o (creado en).
Uso NodeJS, ExpressJS, Sequelize y MySQL.
Gracias por adelantado.
Obtener función de publicaciones:
router.get("/", validateToken, async (req, res) => { const listOfPosts = await Posts.findAll({ include: [Likes], order: [["createdAt", "desc"]], }); const likedPosts = await Likes.findAll({ where: { UserId: req.user.id } }); res.json({ listOfPosts: listOfPosts, likedPosts: likedPosts }); });Modelo de publicaciones:
module.exports = (sequelize, DataTypes) => { const Posts = sequelize.define("Posts", { title: { type: DataTypes.STRING, allowNull: false, }, postText: { type: DataTypes.STRING, allowNull: false, }, username: { type: DataTypes.STRING, allowNull: false, }, }); Posts.associate = (models) => { Posts.hasMany(models.Comments, { onDelete: "cascade", }); Posts.hasMany(models.Likes, { onDelete: "cascade", }); }; return Posts; };Node.js acepta el parámetro createdAt como una instancia de Date normal. Puede recuperar partes o la fecha para construir el formato que desee.
let date = post.createdAt; let day = date.getDate().toString().padStart(2, '0') let month = (date.getMonth()+1).toString().padStart(2, '0') let year = date.getFullYear().toString() let hours = date.getHours().toString().padStart(2, '0') let minutes = date.getMinutes().toString().padStart(2, '0') let dateFormatted = `${day}.${month}.${year} ${hours}:${minutes}`; console.log(dateFormatted); padStart se usa para tener un encabezado cero si el número tiene solo un dígito, como aquí: 01.05.2022 . Lo mismo para las horas y los minutos, puedes quitarlo como quieras. El mes se incrementa en 1, porque January is 0 , por lo que para que el usuario pueda leerlo, debemos incrementarlo.
La mejor práctica es mover el formato de fecha para que function