trong máy chủ của tôi/server.jsMeteor: Điều kiện chủng tộc có thể xảy ra với Meteor.collections ở phía máy chủ không?
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 {}
}
});
Tôi sợ rằng khi saveOnServer() được gọi bởi 2 khách hàng cùng một lúc, nó sẽ trả lại TOTALCOUNT tương tự cho từng khách hàng và về cơ bản kết thúc chèn cùng số nguyên vào id đối tượng. Mục tiêu cuối cùng là chèn hàng ở phía máy chủ với một hoạt động nguyên tử chỉ hoàn thành khi totalCount
được trả về thành công và tài liệu được chèn vào để đảm bảo rằng không có id trùng lặp nào tồn tại? Tôi đang cố gắng không sử dụng mongodb _id nhưng có cột số nguyên incrementing id của riêng tôi.
Tôi tự hỏi làm cách nào để đảm bảo rằng trường được tự động tăng cho mỗi thao tác chèn? Tôi hiện đang dựa vào việc nhận tổng số tài liệu. Là một điều kiện chủng tộc có thể ở đây? Nếu vậy, cách sao băng đối phó với điều này là gì?
về nguyên tắc, mã sao băng quá xa dữ liệu để đảm bảo điều này. bạn nên sử dụng các công cụ dbms để xác thực như vậy. – dandavis
ở phía máy chủ tất cả mọi thứ là đồng bộ ngay để tránh địa ngục gọi lại bằng cách sử dụng nút-sợi? Nhưng meteor.collection quản lý mongodb, là có một cách để đảm bảo một đối tượng meteor.collection sẽ được nguyên tử hoặc chủng tộc điều kiện miễn phí? – KJW
Cùng một câu hỏi ở đây và trả lời http://stackoverflow.com/questions/15886833/how-can-i-create-an-auto-increment-field-on-meteor. Mã của bạn không phải là vấn đề trừ khi bạn đang chạy trên nhiều máy chủ. – user728291