Estoy tratando de pasar algo de la aplicación al controlador y luego al modelo y luego volver a pasarlo, me muevo hacia abajo en la cadena hacia los modelos y obtengo lo que quiero enviar de regreso, pero luego mi controlador regresa indefinido. Soy consciente de que no estoy devolviendo la promesa correctamente, pero no puedo ver por qué no estoy devolviendo.
Controlador.js
const { fetchOwnerById } = require('./models')
const handleGreeting = (request, response) => {
response.status(200).send({ message : 'hello from my api'})
}
const getOwnerById = (request, response) => {
const ownerId = request.params['id'];
fetchOwnerById(ownerId)
.then((owner) => {
console.log(owner)
response.status(200).send({owner : owner})
})
}
module.exports = { handleGreeting, getOwnerById }
modelos.js
const fs = require('fs/promises')
const fetchOwnerById = (ownerId) => {
console.log(ownerId)
fs.readFile(__dirname + `/data/owners/${ownerId}.json`, 'utf-8').then((data) => {
console.log(data)
return data
// response.status(200).send(data)
})
}
module.exports = { fetchOwnerById }
Recibo TypeError: no se pueden leer las propiedades de undefined (leyendo 'entonces')
El método fetchOwnerById no devuelve nada, por lo que devuelve undefined , debe devolver una promise de datos para poder llamar then .
const fs = require('fs/promises')
const fetchOwnerById = async (ownerId) => {
console.log(ownerId)
return await fs.readFile(__dirname + `/data/owners/${ownerId}.json`, 'utf-8')
}
module.exports = { fetchOwnerById }