Xử lý đồng bộ khi lấy data trong mongodb
Chào mọi người.
Hiện tại em đang làm một api bằng node js có nhiệm vụ sẽ lấy một danh sách các mã đổi thưởng, khi mã đổi thưởng được trả về cho một admin thì nó sẽ được update status = pending, và một mã đổi thưởng sẽ chỉ trả về cho một admin.
Nhưng em đang bị mắc ở phần xây dựng phần đồng bộ cho api trả về, vì khi nhiều admin cùng request nên thì có thể sẽ trả về các mã đổi thưởng trùng nhau.
Ví dụ: Trong khi admin1 đang request để lấy 100 mã đổi thưởng và đang trong quá trình update status của 100 mã đổi thưởng đó, thì admin2 request lên lấy 100 mã đổi thưởng khác, thì sẽ có những mã đổi thưởng chưa được update ở admin1 sẽ được lấy ra trả về cho admin2 (Để lấy mã dự thưởng thì sẽ phải thỏa mãn điều kiện là mã đó chưa được trả về cho admin nào).
Em muốn hỏi mọi người là giờ làm thế nào để xây dựng đồng bộ request hoặc hàm xử lý lấy và update mã dự thưởng để không bị trả về mã dự thưởng lặp.
async query(request) {
let result = null;
try {
result = await QueryModel.find(…);
}
catch(ex) {
console.dir(ex);
}
return result;
}
VD anh anh dùng mongoose, nếu dùng mongodb client thuần chắc cũng giống vậy.
Nguyên tắc là dùng async-await là OK. QueryModel là tên schema.