当前位置: 首页 > 知识库问答 >
问题:

如何使用 Azure 函数和宇宙节点 sdk 在宇宙数据库中检查项是否过期?

彭华皓
2023-03-14

我当前在数据库中有一个两个用户正在尝试更新的项目。如果其中一个更新了该项目,我希望其他用户的更新失败,然后重试。我使用内部 eTag 找到了 C# 的示例代码,但我找不到等效的 java 脚本。

https://github . com/Azure/Azure-cosmos-dot net-v3/blob/e22f 9593 a 1245d 3 B1 c 98 db 78 bacc 89 e 4786d 96e 7/Microsoft。azure . cosmos . samples/Usage/item management/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;
};

我还在阅读更改提要处理器上的留档,并想知道是否有一种方法可以读取已更改的项目,然后失败更新。我不知道如何在更改提要处理器中实现检查更改,因此任何帮助也将不胜感激。谢谢!

共有1个答案

能逸清
2023-03-14

我找到了etag的javascript等价物,并进行了如下修复:

const { resource: updatedItem } = await container.item(incomingItem.id).replace(appendedItem,  { accessCondition: { type: "IfMatch", condition: currentItem._etag } });

此处找到的文档:https://docs . Microsoft . com/en-us/azure/cosmos-db/SQL-API-nodejs-samples

代码示例:https://github.com/Azure/azure-cosmos-js/blob/master/samples/ItemManagement.ts#L98-L135

 类似资料:
  • 我们有一个使用MongoDB连接器v3.1的环回v3.8应用程序,它在运行本机MongoDB的环境中工作正常,但现在我们想部署到Azure并使用宇宙数据库,理论上应该支持所有本机MongoDB命令。 我们面临的问题是修补程序操作(我相信通过环回映射到Model.updateAttribute)不起作用。这是我们得到的错误: 无法更新客户端。{错误:未找到id为592cc132a31109354c4

  • 我正在尝试处理我用tesseract录制的黑板图像,但运气不好。我想过做预处理来帮助提高我们的结果,但不确定该用什么方法来调用它。 这是我拥有的图像: 下面是我正在运行的< code>tesseract命令: 请注意,它不必正确处理所有数学符号,但至少要得到,也许。 我以前有一张照片,只用这些命令就能很好地工作。照片如下: 下面是它会产生的结果: 这并不完美,但比我以前得到的要好得多。如何提高新黑

  • 原始代码:宇宙页面访问可访问系列页面可测试 = container.queryitems( “从系列中选择 Family.id”,查询选项,家庭.class); 上面的代码打印了项目中的所有项目,我想要的是获取Family中存在的项目id,而没有在java中创建任何Family模型类。尝试获取数据库中存在的所有容器的项目id

  • 我有两个azure函数的设置: < li >在CosmosDbCollection和lease上触发Nodejs函数,其中lease前缀对此函数唯一。这个很好用。我可以看到它在日志流中触发,我可以看到它正在运行(我可以从函数中看到我自己的日志,我还可以看到它对cosmos项目进行输出更改 < li>Java函数(称为parseProduct)也有一个Cosmos触发器和另一个lease前缀。这个可

  • 我们计划将数据库迁移到Azure cosmos graph数据库。我们正在使用此批量导入工具。 它没有提到Json输入格式。 批量导入Azure cosmos graph db的Json格式是什么 https://github.com/Azure-Samples/azure-cosmosdb-graph-bulkexecutor-dotnet-getting-started azure 批量导入映

  • 60min,算法我用穷举做的,不会动归,面试官面露难色😂😂面试官人很好,我忘了可能导致ThreadLocal内存泄露的原因,面试官会尝试引导我去理解和推断。 项目 用过哪些分布式组件,介绍功能以及怎么用的 介绍了解过的限流算法并做比较 Sentinel怎么实现熔断与降级的 比较Synchronized与Lock,并介绍他们的粒度 线程池参数 ThreadLocal实现机制与内存泄露问题 可达性