sql >> データベース >  >> RDS >> Mysql

SequelizeのfindAll()が取得されない

    Sequelizeはinstanceの配列を返しています ユーザーのオブジェクト。 instance オブジェクトには、それに基づいて行動できる便利なメソッドがいくつか付属しています。

    フィールドをキーとしてデータのみを取得する場合は、get({plain: true})を使用します 。たとえば、配列の最初のオブジェクトの場合users[0].get({plain: true}) 。インスタンスを使い続けたい場合は、フィールドの名前でgetを使用できます。たとえば、users[0].get('nombre')

    users[0].nombreのように、ログに記録されていない場合でも、オブジェクトのプロパティに直接アクセスできる必要があります。 。

    編集

    これは元の質問とは関係ありませんが、別の回答に対するあなたのコメントです。非同期で物事を行っていることを確認してください。コードは次のようになります:

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

    次に、このメソッドを呼び出すときは、次のようにします。

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

    または

    Sequelizeはpromiseを使用するため、promiseを使用してこれを行うのが最善の方法です。

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

    次に、このメソッドを呼び出すときは、次のようにします。

    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. 最新のメッセージのSQLクエリ

    2. zendのデータベースでテーブルの列名を取得するにはどうすればよいですか?

    3. Windowsでmysqlストアドプロシージャをスケジュールする方法は?

    4. MySQLでの合計時間の計算