En mi Express API, quiero que el cliente pueda incluir su número de teléfono o la dirección del sitio web o no incluirlos en absoluto.
Así es como se hacen las sentencias SELECT:
-- SELECT all users SELECT * FROM users ORDER BY user_id ASC; -- SELECT a user SELECT * FROM users WHERE user_id = $1; Así es como se realiza actualmente la declaración INSERT, que por defecto cualquier valor indefinido es NULL :
INSERT INTO users (name, username, email, phone, website) VALUES ($1, $2, $3, $4, $5) RETURNING *;Así es como se maneja la función de devolución de llamada de la solicitud POST:
const createUser = async (req, res, next) => { const { name, username, email, phone, website } = req.body; try { const create = await db.query(insertUser, [ name, username, email, phone, website, ]); res .status(201) .json({ message: "User Created Successfully!", user: create.rows[0] }); } catch (err) { // If UNIQUE constraint is violated if (err.code == "23505") { uniqueConstraintError(err, next); } else { serverError(err, next); } } }; insertUser es la variable en la que se almacena la declaración de PostgreSQL .
Si trato de agregar la información del usuario sin ingresar el teléfono y el sitio web (que son opcionales), las solicitudes GET aún mostrarán esas columnas con el valor NULL asignado:
{ "user_id": 10, "name": "Bruce Wayne", "username": "Batman", "email": "bat@cave.com", "phone": null, "website": null } ¿Hay alguna manera de no mostrar esos valores NULL en las declaraciones SELECT y OBTENER algo como esto en su lugar?
{ "user_id": 10, "name": "Bruce Wayne", "username": "Batman", "email": "bat@cave.com" }