Có hướng dẫn giới hạn cho các thủ tục được lưu trữ CosmosDB và việc xử lý của chúng là new Date()
và so sánh ngày tháng.Tạo và so sánh ngày tháng bên trong các thủ tục được lưu trữ của CosmosDB
Mã sau là một thủ tục được lưu trữ CosmosDB để 'cố định' việc ghi tài liệu sau một thời gian nhất định. Thuộc tính currentDoc.FreezeDate
có định dạng ISO-8601, ví dụ: '2017-11-15T13: 34: 04Z'.
Lưu ý: đây là ví dụ về tình huống tôi đang cố hiểu. Nó không phải là mã sản xuất.
function tryUpdate(newDoc) {
__.queryDocuments(
__.getSelfLink(),
{ /* query to fetch the document */ },
(error, results) => {
var currentDoc = results[0]; // doc from the database
// fail if the document is still locked
if (new Date(currentDoc.FreezeDate) < new Date()) {
getContext().getResponse().setBody({ success: false });
return;
}
// else update the document
/* snip */
}
);
}
Câu hỏi của tôi là: trong vòng CosmosDB thủ tục lưu trữ, được new Date()
bị ảnh hưởng bởi các múi giờ, đặc biệt là cho rằng cơ sở dữ liệu có thể nằm trong một khu vực khác với mã cách gọi? Mã so sánh ngày ở đây có hợp lệ trong mọi tình huống không?
Câu trả lời hay! Điều này đã đặt tâm trí của tôi để nghỉ ngơi. Thú vị trước khi nói về 'thời gian toàn cầu chính xác', quá. – Squiggle