我有一个Azure CosmosDB模拟器正在运行,我正在通过@nestjs/azure-database
库访问它。DB有一个容器,其TTL设置为五分钟。由于某种原因,当容器或项目有TTL时,无法手动删除它们。任何这样做的尝试都会导致Resource Not Found
错误。我正在运行的测试代码是
await this.container.items.create({id: '1'});
await this.container.item('1').read();
await this.container.item('1').delete();
字符串
读取操作正常进行,但是删除操作总是失败,并且项目仍然保留在DB中,在模拟器的资源管理器上可见。我在文档中看不到任何内容表明如果项目具有ttl,则无法手动删除项目。如何抢先删除具有尚未过期的ttl的项目?
1条答案
按热度按时间dm7nw8vv1#
这个问题最终与TTL无关,在一步一步地改变一个工作示例之后,我最终发现,尽管
partitionKeyValue
是@azure/cosmos
中的可选参数,但任何项目上的变化,如delete
或patch
都会抛出404,除非提供partitionKeyValue
。希望这能为其他人节省一些时间。