2016-05-29 5 views
0

NodeJSサーバーにヒットしてMongoDBデータベースに文書として保存されたユーザーが送信したこれらの「タスク」があります。これらのタスクは、ユーザーによっても取得され、一度に1つずつ作業されます。NodeJSとMongoDBスタックの同時制御

  • タスクの状態があります:保留中のタスクが送信されたとき、
  • 完成した作業は、当初、彼らは「保留」状態になっています。
  • ユーザが作業をしたいとき、彼らはFIFO形式で1つの「Pending」タスクを問い合わせます。ユーザーにタスクを与える際に
  • は、そのタスクは、2人のユーザーが同時に作業するタスクのために頼むとき

私の問題があり、「作業」状態を持つように更新され、彼らは同じタスクが原因かもしれません競合状態になる。最初のクエリがタスクの状態を「作業中」に更新しようとしている間に、2番目のクエリがそのクエリをフェッチすることもできます。誰かが、私がNodeJSとMongoDBを使ってすべてを非同期で解決する方法を教えてもらえますか?あらゆるフレームワークやライブラリも歓迎されています。

答えて

0

MongoDBは、その目的のために正確にfindAndModifyメソッドを持っています。 MongoDBのドライバを使用して

、次のコードを実行します、

collection.findAndModify({ 
    // Query 
}, [ 
    // Sort 
], { 
    $set: { 
    state: 'working' 
    } 
}, { 
    new: true 
}).then((task) => { 
    // This is your "working" task 
}) 
関連する問題