私はエクスプレスでバックエンドのJavaScriptを書いていますが、何らかの理由で私の関数は呼び出されたときに定義されていません。次のようになります。
//高速ルートは次のようになります。
exports.check = function(req, res) { //check if username is in database
var my_result = authenticator(req); //authenticator is defined below
console.log(typeof(authenticator(req))); //returns undefined
};
function authenticator(req) {
var mongoose = require('mongoose');
var db = mongoose.createConnection('localhost', 'users');
db.once('open', function callback() {
var personschema = mongoose.Schema({
username: String,
password: String
})
var person1 = db.model('personcollection', personschema)
person1.find({
username: req.body.username,
password: req.body.password
}, function(err, obj) {
if (obj.length === 0) {
return "yay";
} else {
return "neigh";
}
} //end function
関数自体はエクスプレス ルート内に配置すると機能しますが、できるだけ少ないコードでルートをきれいに保ちたいと考えています。それはオプションですか?
ご協力いただきありがとうございます。