で同期(重複しない)情報を保存し、私は同じコレクションのドキュメントに保存したい:このMEANスタックプロジェクトのために非同期プロセス
- 異なる種類のタイプごとに
- ユニーク年代番号。
例:
{ID:1、タイプ: 'A'、クロノ:1}
{ID:2、タイプ: 'B'、クロノ:1}
{ID:3、タイプ: 'B'、クロノ:2}
{ID:4、タイプ: 'A'、クロノ:2}
{ID:5、種類: 'B'、クロノ:3}
...
フロントエンドには、私はnodeJS Serverはドキュメントの選択したタイプのためのDB内の最後のクロノ番号を探していて、1
を追加している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;
}
ループを使用
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に保存されていないことを理解します。したがって、DB内の「最後のクロノ番号」は実際には最後のクロノ番号ではありません。
誰かがこの問題を解決する方法があります? 私は、フロントエンド側の同期ソリューションしたくない、あなたがsave
のでsaveDoc
の下chrono
をインクリメントした後ドキュメントが動作することができクロノ番号
で関数を呼び出します。 – Dieterg
こんにちはDieterg、私はフロントエンド側でそれをやりたいから2人のユーザーが同じ操作をしてしまうという問題は、バグにつながる可能性があります。そして、どうやってサーバサイドでそれを作るのか分かりません。私は機能が欠けている? – Alex
この機能をサーバーに追加することもできます。 : - – Dieterg