2016-12-28 4 views
-1

ユーザーがビデオを送信できるビデオ定格サイトを構築していますが、ビデオの送信/ 1時間に1回または何かを提出する。それを行うための最善の方法は何ですか?私はSetTimeOut/Intervalについて、またいくつかのミドルウェアを使用していましたが、運はまだありません。このコードが掲載された後NodeJs/MongoDB - ユーザーが投稿/再送信できるまでの時間を待ちます。

/ユーザーによって要求され、私は彼らにタイムアウト/クールダウン

を与えたい
router.post('/submit', isLoggedIn, function (req, res, next){ 
    User.findOne({_id: req.user._id}, function (err, userfound){ 
      var video = new Video({ 
      title : req.body.title, 
      videoLink : req.body.videoLink, 
      category : req.body.category, 
      ownByUser : req.user._id, 
      }); 

      video.save(function (err, moreVideo){ 
        userfound.myFrags.push(moreVideo); //Error : Cannot read property 'push' of undefined 
        userfound.save(); 
      }); 
      res.redirect('/dashboard') 
    }); 

});

私はまた投稿が提出された時刻/日付を保存しています。それを使用して現在の日付と比較してください。どんな助けでも大歓迎です:-)

+0

について

もっと私は、そのユーザーが最近提出したビデオをチェックして、時間の比較を行うことをお勧めしたいです。それ以外の場合は、セッション変数を使用して –

答えて

0

私は以下のミドルウェアのようなミドルウェアを持っていることでサーバーチェックを使うのが最善の方法だと思います。私はそれをテストしていませんが、あなたはそれとして、またはいくつかの変更でそれを試すことができ、

function limitVideo (req, res, next) { 
Video.findOne({ 
     ownByUser : <userId>, 
}, 
{ 
     createdDate : 1 
} 
) 
.sort({createdDate : -1}) 
.exec (function (err, data) { 
     if(err) { 
      return <Ur Err msg> 
     } 
     if(!data) { 
      return <Ur Err msg> 
     } else { 
      var ONE_HOUR = 60 * 60 * 1000; // in ms 
      var lastPostdate = data.createdDate; 
      if(((new Date) - lastPostdate) >= ONE_HOUR) { 
       next(); 
      } else { 
       return <You cant upload videos> 
      } 
     } 
}) 
} 

// Use middleware in ur post route 
router.post('/submit', isLoggedIn, limitVideo, function (req, res, next){ 
<Ur code> 
}); 
0

これは奇妙に聞こえるかもしれないが、あなたは1時間のTTL指数との目的で、「経過」と呼ばれる別のコレクションを持つことができますon createdDate、ユーザーがビデオを提出するたびに、コレクションの経過中にそのuserIdのドキュメントがあることを最初に確認します。

このようなドキュメントがない場合は、ビデオを保存して、経過コレクションのuserIdとcreatedDateでエントリを作成します。

すでにドキュメントがある場合は、ユーザーにはまだクールダウン中であることを伝えます。

この場合、TTL索引は、この場合は1時間後にドキュメントを単独で削除するという意味で機能します。

これを使用すると、カウンタを維持して1時間程度で2つのビデオしか許可しないように機能を拡張することもできます。

弱点はありますが、動画を保存しても失効コレクションへの登録に失敗した場合のようなフェールセーフが必要な場合がありますか? TTL Index

関連する問題