對於這意味着Stack項目的信息,我想在同一個集合文件保存:保存同步(不重複)的異步進程
- 不同類型的每種類型
- 獨特的時間數。
例如:
{ID:1,類型: 'A',計時:1}
{ID:2,類型: 'B',計時:1}
{ID:3,類型: 'b',計時:2}
{ID:4,類型: 'A',計時:2}
{ID:5,類型: 'b',計時:3}
...
在前端,我使用的是循環
for (var i++; i < type.length; i++) // lets say Document type = ["a", "b"]
for (var j++; j< 100; j++) // Creates 100 documents
// Front end service request directing to the NodeJS Server to create a document
serverDocument.createDocument(dataS).success(function(dataR){
counterDOC++;
$scope.documentID= dataR._id;
}
的服務器的NodeJS在DB尋找最後的計時號文件所選擇的類型,並添加1
doc = new db.Document (req.body); // req.body is for example {type: 'a'}
doc.save();
getChrono (doc); // home made function
的獲得計時功能:
var getChrono = function(doc){
var config=
{
type : doc.type,
}
query = db.Document.findOne(config).sort({$natural:-1});
query.exec(function (err, chrn){
doc.chrono = 1;
if (chrn != null)
if(chrn.chrono != null)
doc.chrono= chrn.chrono+1;
doc.update();
});
其結果是類似的東西:
{ID:1,類型: 'A',計時:1}
{ID:2,類型: 'A',計時:1}
{ID:3,類型: 'A',計時:1}
{ID:4,類型: 'A',計時:1}
{ID:5,類型: 'A', chrono:2} ... 當然,對象ID是唯一的,但是按時間順序排列的數字對於某種類型的文檔不是唯一的。
我知道下一次請求啓動時,信息還沒有保存在數據庫中。因此,DB中的'最後一個計時碼'並不是現實中最後一個計時碼。
有人可以有一種方法來解決這個問題? 我不想在前端側的同步解決方案,這將是合乎邏輯的有服務器端來管理計時數
你需要一個隊列來處理同步的方式您的項目。 – Dieterg
嗨Dieterg,我不想在前端做這件事,因爲讓2個用戶做同樣的操作的問題可能會導致一個錯誤..我不知道如何使它在服務器端..也許我想念一個功能? – Alex
您也可以在服務器上添加此功能。 : - – Dieterg