私のserver/server.jsで
Meteor.methods({
saveOnServer: function() {
var totalCount = Collections.find({
"some": "condition"
}).count();
if (totalCount) {
var customerId = Collections.update('someId', {
"$addToSet": {
objects: object
}
}, function(err) {
if (err) {
throw err;
} else {
return true;
}
});
} else {}
}
});
saveOnServer() が 2 つのクライアントから同時に呼び出されると、クライアントごとに同じ totalCount が返され、基本的に同じ整数がオブジェクト ID に挿入されることになります。最終的な目標は、サーバー側に行を挿入することです。アトミック操作は、totalCount
が正常に返され、ドキュメントが挿入され、重複する ID が存在しないことを確認した場合にのみ完了します。mongodb _id を使用しないようにしていますが、独自の整数インクリメント id 列を使用しています。
挿入操作ごとにフィールドが自動インクリメントされるようにするにはどうすればよいでしょうか? 現在、ドキュメントの総数を取得することに依存しています。ここで競合状態は可能ですか? もしそうなら、これに対処する流星の方法は何ですか?