sql >> Databáze >  >> RDS >> Mysql

findAll() z Sequelize nezíská

Sequelize vrací pole instance objektů v uživatelích. instance objekt má k sobě připojenou řadu metod pohodlí, které vám umožňují s ním jednat.

Pokud chcete získat pouze data s vašimi poli jako klíči, použijte get({plain: true}) . Například pro první objekt v poli users[0].get({plain: true}) . Pokud chcete instance nadále používat, stačí použít get s názvem vašeho pole. Například users[0].get('nombre') .

Měli byste mít také možnost přistupovat k vlastnostem přímo na objektu, i když nejsou protokolovány, například users[0].nombre .

Upravit

To nesouvisí s původní otázkou, ale s vaším komentářem k jiné odpovědi. Ujistěte se, že děláte věci asynchronně. Kód by měl být:

usuarioService.getAll = function (cb) {
    Usuario.findAll().then(function (users) {
        return cb(null, users);
    }).catch(function(err) {
        return cb(err);
    });
}

Potom při volání této metody uděláte něco jako:

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)
    });
});

nebo

Vzhledem k tomu, že Sequelize používá sliby, nejlepším způsobem by bylo udělat to pomocí slibů.

usuarioService.getAll = function () {
    return Usuario.findAll({ raw: true });
}

Potom při volání této metody uděláte něco jako:

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
    });
});


  1. Jak se připojit k databázi MySQL?

  2. Existuje MySQL.. INSERT... ON DUPLICATE KEY SELECT?

  3. T-SQL trim   (a další nealfanumerické znaky)

  4. SELECT DISTINCT ignoruje různé případy