2016-07-07 1 views
0

Iは、DB(app.param('userId', users.userById);)からオブジェクトをロードするために明示app.paramを使用しています:この後express app.paramを使用してオブジェクトをプリロードして続行する際に警告が表示されるのはなぜですか?

exports.userById = function (req, res, next, id) { 
    return user.findOne({ 
     where: { id: id } 
    }).then(function (result) { 
     req.user = result; 
     next(); 
    }).catch(function (error) { 
     next(error); 
    }); 
}; 

私は次のコードでロードされたオブジェクトを更新します。

何らかの理由で「約束がハンドラで作成されましたが、返されませんでした」という警告が表示されます。

理由はわかりませんが、実際にデータベースを変更する前にsequelizeを使用するルーティングパラメータを使用すると、いつもそのようなことが起こります。

これを行う正しい方法は何ですか?

私はPostgresでsequelize v3.23.3を使用しています。

EDIT

私は同じ警告をスローより単純な例にコードを変更しました。

答えて

1

このリクエストを約束してお返しすることを忘れた場合、次のハンドラは引数がundefinedですぐに実行されます。これはPromises/A +仕様で完全に有効ですが、探しているとは思われません。

解説はHow to execute code after loop completesを参照してください。

+0

私はsequelizeの後にnextを呼び出すだけで、データベースから値を返します。または私は何かを逃している? – belyid

関連する問題