В настоящее время у меня есть элемент в базе данных, который два пользователя пытаются обновить. Если один обновляет элемент, я хочу, чтобы обновление другого пользователя не удалось, а затем повторите попытку. Я нашел образец кода для C# с использованием внутреннего eTag, но не могу найти эквивалент javascript.
https://github.com/Azure/azure-cosmos-dotnet-v3/blob/e22f9593a1245d3b1c98db78bacc89e4786d96e7/Microsoft.Azure.Cosmos.Samples/Usage/ItemManagement/Program.cs#L683 -L734
Здесь это какой-то псевдокод для того, что я хочу сделать с помощью etag:
const patchItem = async function(container: Container, incomingItem: ItemData, currentItem: ItemData)
{
// state is an array of objects and this just adds to it
incomingItem.state.forEach(c => currentItem.state.push(c));
const appendedItem =
{
id: currentItem.id,
state: currentItem.state
_etag: currentItem._eTag
};
const { resource: updatedItem } = await container.item(incomingItem.id).replace(appendedItem, {IfMatchETag = appendedItem._eTag});
return updatedItem;
};
Я также читаю документацию по процессору подачи изменений и задаюсь вопросом, есть ли способ прочитать, что элемент был изменен, а затем сбой обновление. Я не уверен, как реализовать проверку изменений в процессоре подачи изменений, поэтому любая помощь с этим также будет оценена. Спасибо!