findUser では、そのコールバックの場所を提供していないようです。mongoose クエリ自体も、ドキュメント (またはエラー) をコールバックに返して処理します。
findUser
見た目に合わせて変更したい場合は、次のようにします。
exports.findUser = function(nameIn,callback){
User.find({name: nameIn}, function(err,user) {
if (err)
throw err;
callback(user)
});
)};
mongoose のクエリの結果 (成功または失敗) は、クエリの引数の関数に (コールバックとして) 渡されます。これは、Node.js の非同期の性質に沿っています。Node の非ブロッキング I/O を処理するその他の一般的に受け入れられている方法はeventsとstreamであり、promise のような方法は多少物議を醸す場合でも実行可能です。
Mongoose 自体は、そのガイドでコールバックを使用しますが、promise も利用できます。
今あなたの関数を見ると、クエリする名前と、返されたドキュメントで何をしたいのかをコールバックとして渡しています。マングース関数自体には、すでにすべての機能があります。
User.find({name: req.params.name}, function(err,user) {
if (err)
throw err;
console.log(user);
});
定義する価値があるのは、DRY を維持するfindUser
ドキュメントで操作することがたくさんある場合のみです。findUser