Sequelize está retornando uma matriz de
instance
objetos em usuários. Uma instance
objeto tem vários métodos de conveniência anexados a ele que permitem que você aja sobre ele. Se você deseja obter apenas os dados com seus campos como chaves, use
get({plain: true})
. Por exemplo, para o primeiro objeto na matriz users[0].get({plain: true})
. Se você quiser continuar usando as instâncias, basta usar get com o nome do seu campo. Por exemplo, users[0].get('nombre')
. Você também deve poder acessar as propriedades diretamente no objeto, mesmo que elas não estejam sendo registradas, como
users[0].nombre
. Editar
Isso não está relacionado à pergunta original, mas ao seu comentário em outra resposta. Certifique-se de estar fazendo as coisas de forma assíncrona. O código deve ser:
usuarioService.getAll = function (cb) {
Usuario.findAll().then(function (users) {
return cb(null, users);
}).catch(function(err) {
return cb(err);
});
}
Então, ao chamar esse método, você faria algo como:
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)
});
});
ou
Como o Sequelize usa promessas, fazer isso usando promessas seria a melhor maneira.
usuarioService.getAll = function () {
return Usuario.findAll({ raw: true });
}
Então, ao chamar esse método, você faria algo como:
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
});
});