2016-11-21 7 views
0

免責事項:エクスプレス/ノードでちょっと新しく、フォトホスティング/ギャラリーアプリで実践しています。これはexpressのルートの使用法が正しくありませんか?

私の理解では、ルータはサーバからクライアント/データベースへのエンドポイントとして使用されます。この場合

私はDBに画像位置を記憶するが、ノードJSアプリの中から呼び出されると、クライアント側の要求に直接ないstoreImagesと呼ばれる機能を有しています。

代わりにstoreImagesをルータフォルダ外のヘルパー機能として移動する必要がありますか?

これはクライアントの投稿/取得要求から直接呼び出されていませんが、images.jsルートが本質的にImage.jsモデルに関連付けられていると感じています。それの外には存在しない。私はこのように考えて間違っていますか?

ルーターのフォルダに置いておくのが最善であれば、ルーターと共にこの機能をエクスポートする正しい方法は何ですか?下の現在の方法は私も試みたが、機能していません:{:ルータ、 storeImages:ルータstoreImages、 }

= module.exportsは

しかし、それはどちらか動作しませんでした。

var express = require('express'); 
var router = express.Router(); 
var Image = require('../models/image'); 

router.get('/getImageLocations', function(req,res){ 
    //Do Stuff 
}); 


exports.storeImages = function(memoryId, location, comment){ 
    var newImage = new Image({ 
     ... 
    }); 
    Image.storeImageURL(newImage, function(err, user){ 
     ... 
    }) 
}; 

module.exports = router; 
+0

データベースファイルをモデルファイルの中に入れて、ルートファイルに特定のエンドポイントでログインしているユーザーを確認するなどの他の機能 – 0xtvarun

答えて

2

ルーターは、httpリクエストを処理する関数です。さて、ルーターファイルに入る必要があるものの何が必要であるかについての厳しいルールはありませんが、あなたのコードで理解しているところから、storeImagesは、paramsを受け入れ、ストアをデータベースに保持する関数です。ここでは親指のルールのカップルです:関数がルートに結び付けられている場合は、それを1つの特定のルートが呼び出されたときにのみ使用されている。すなわち

  • 、それが機能した場合、そのルータ
  • の中でそれを保つために理にかなっています複数のルートで使用されている場合は、共有ユーティリティ関数としてルートファイルの外部に格納する必要があります。
  • モデル関連の機能の場合、モデルレイヤの処理方法に応じてモデルファイル内に格納できます
関連する問題