Sequelize retourneert een array van instance
objecten in gebruikers. Een instance
object heeft een aantal gemaksmethoden die u in staat stellen ernaar te handelen.
Als u alleen de gegevens wilt krijgen met uw velden als sleutels, gebruikt u get({plain: true})
. Bijvoorbeeld voor het eerste object in de array users[0].get({plain: true})
. Als u de instanties wilt blijven gebruiken, kunt u gewoon get gebruiken met de naam van uw veld. Bijvoorbeeld users[0].get('nombre')
.
U zou ook rechtstreeks toegang moeten hebben tot de eigenschappen van het object, zelfs als ze niet worden geregistreerd, zoals users[0].nombre
.
Bewerken
Dit heeft niets te maken met de oorspronkelijke vraag, maar met uw opmerking over een ander antwoord. Zorg ervoor dat je dingen asynchroon doet. De code moet zijn:
usuarioService.getAll = function (cb) {
Usuario.findAll().then(function (users) {
return cb(null, users);
}).catch(function(err) {
return cb(err);
});
}
Als je deze methode aanroept, zou je zoiets doen als:
router.get('your_path', function(req, res, next) {
serv.getAll(function(err, users) {
if (err) {
// your err handling code
}
// users is now a valid js array
// could send it in res.json(users)
});
});
of
Aangezien Sequelize beloften gebruikt, zou dit de beste manier zijn om dit te doen met beloften.
usuarioService.getAll = function () {
return Usuario.findAll({ raw: true });
}
Als je deze methode aanroept, zou je zoiets doen als:
router.get('your_path', function(req, res, next) {
serv.getAll().then(function(users) {
res.render('usuarios/index',{
users: users
})
}).catch(function(err) {
// your error handling code here
});
});