2016-09-18 15 views
0

Expressオブジェクトをモジュールからアプリケーションに渡すことに苦労しています。アプリケーションは簡単です。私はフォームから入力を受け取り、文字列をテストし、nullまたはオブジェクトを返します。しかし、私は別のアプローチを試して、私のオブジェクトはまだ未定義に戻ってきます。モジュールからオブジェクトにオブジェクトを渡す最も効率的な方法を探しています。Expressモジュール - メインアプリケーションへのオブジェクトのエクスポート

ここに私のapp.jsのコード

var app = express(); 
 
var path = require('path'); 
 
var router = express.Router(); 
 
var checkString = require('./checkString.js'); 
 

 
//Test Server Connection 
 
app.listen(3000, function() { 
 
    console.log('Example app listening on port 3000!'); 
 
}); 
 

 
//Set Use 
 
app.use(bodyParser.urlencoded({ 
 
    extended: false 
 
})); 
 
app.use(bodyParser.json()); 
 
app.use(router); 
 

 
//Set Routes 
 
app.set('view engine', 'ejs'); 
 
app.set('views', path.join(__dirname, './views/pages')); 
 

 

 
//GET Method 
 
router.get('/', function(req, res) { 
 

 
    //Renders EJS Template and variables 
 

 
    res.render('index'); 
 
}); 
 

 

 
//Receive User Input from Form 
 
//Post Request 
 
router.post('/', function(req, res) { 
 

 
    //Check Form Input Results 
 
    var formInput = req.body.inputText; 
 
    var ReqMethod = req.method; 
 
    console.log(`Method: ${ReqMethod}`); 
 
    console.log(`Body: ${formInput}`); 
 

 
    //Assign form data to a variable after calling a function 
 
    checkString.dateResponse(formInput); 
 

 

 
    //res.json(checkString.timeStamp); 
 
    res.end(); 
 
});

ここに私のモジュールのコード( 'checkString.js')

//var exports = module.exports {}; 
 

 
var moment = require('moment'); 
 

 
//Create TimeStamp Object to Export to Server.js 
 
exports.timeStamp = function(unix, natural) { 
 
    this.unix = unix; 
 
    this.natural = natural; 
 
} 
 

 
//Function Working in Chrome Console 
 

 
exports.dateResponse = function(data) { 
 

 

 
    //Check The Date 
 
    if (isNaN(data)) { 
 

 
    return null 
 

 
    } else { 
 

 
    return data; 
 

 
    } 
 

 

 
    //Update timeStamp object with time/date 
 

 
    if (data !== null) { 
 

 
    var unix = moment(x).unix(); 
 

 
    var natural = moment(x).format('MMM Do, YYYY'); 
 

 
    return timeStamp(unix, natural); 
 

 
    } else { 
 

 
    return null 
 
    } 
 

 
}

があるが

答えて

0

あなたのコードにはいくつかの問題がありますが、私が考える最も重要なことは、データを返して何もしないことです。したがって

console.log(checkString.dateResponse(formInput)); 

は、NaNでない場合はformInputを返す必要があります。それ以上の理由がありません。なぜなら、それはそれ以上の復帰理由にはならないからです。さらに、 "isNaN"はnumberがNaNかどうかをチェックする最良の方法ではありません(多くの非数のケースで失敗します)。ナノがナノであるかどうかを調べる最良の方法は、比較する場合です。

原因はNaNだけではありません。 (もちろん、私はプリミティブをassummingよ、原因関数の結果が等しくないことができます)あなたは、トップ

​​

にチェックを移動する場合、第三にyou'rコードはより整頓することができ

あなたは、不要なintendationを避けることができます。また、論理演算子を変数に移動して、ifの中に変数のみを記述することもできます。 (でも時には過剰です)

const isNaN = data !== data; 
const isNull = data === null || data === undefined; 
const isNall = isNaN || isNull 
if (isNall) { 
    return null 
} 
+0

[OK]をお寄せいただきありがとうございます。私はこれらの調整を自分のコードにしました。私がconsole.log()を使用しているのは、オブジェクトからの出力をチェックするためです。しかし、私はまだ空白のオブジェクトを取得しています。私の混乱は、timeStampオブジェクトを渡すことに関連しています。私は私の帰りに空白のオブジェクトを取得し続けます。問題がリクエストメソッドにあるか、文字列をチェックするモジュールにあるかどうかは不明です。私が言ったこと以外に、 – Vince

+0

の常連はうまく見えます。多分あなたのformInput値ですか?私は弱いチェック方法を知っていますが、あなたのモジュールを関数の中に入れ、結果があるかどうかを確認します。しかし、私はかなり良いことは確かです。デバッガを使用することもできます。 (node.jsデバッガを参照)、ブレークポイントを割り当て、コードが通過するかどうかとその状態を確認します。 – Mort

+0

hmm ..私はまだ関数からオブジェクトを返すのに苦労しています。探し続ける必要があります。あなたの洞察に感謝します。それは私のコードをきれいにするのを助けた – Vince

関連する問題