2
mongoose.methods
を使用して、関連するモデルのフィールドをスキーマに割り当てて、エクスプレスミドルウェアのプロパティとしてstraghtforwardを使用したいとします。mongoose.methodを設定しようとしたときにコールバックを取得できない
userSchema.methods.accountGroupOfUser = function accountGroupOfUser(callback) {
return this.model('User')
.findById(this.id)
.populate({path: 'roles.account', model: 'Account', select: 'groups'})
.exec(function(err, user) {
if (err) {
return callback(err, null);
}
return callback(null, user.roles.account.groups[0]);
});
};
とミドルウェア
app.use(function(req, res, next) {
res.locals.user = {};
res.locals.user.accountGroupOfUser = req.user && req.user.accountGroupOfUser();
next();
});
をし、それは私にcallback is not a function
エラーを返します。方法は次のよう。
私はこのようなエラーでさまざまなexaplesを探しましたが、それはうまくいくように思われます、私はまた、私のアプリケーションでこれを使用しているときに私はデータベースにacynchronious呼び出しを行う必要があり、なぜそれがエラーを返すのか理解していない。
くださいelabolarateことはできますか?どのように私は本当にcllabackを渡すのですか? – ASem
スキーマメソッドが 'callback()'を呼び出すときに実行する関数を渡します。私は私の答えを更新しました。 –
これは私を返します。TypeError:this.modelは関数ではありませんが、コールバックの問題を解決しました。ありがとうございます。 – ASem