我的文档类型为State,用于保存当前和历史“状态”数据。每当当前状态的属性发生变化时,我都会向States集合中添加一个新文档,因此会随着时间的推移创建状态的“快照”。
我想知道我是否可以使用变更提要和CosmosDBTrigger来检测State的各个属性中的变更,以便我可以基于变更触发代码。
类似这样的东西:
[FunctionName("StateChangeTrigger")]
public static void Run([CosmosDBTrigger(
databaseName: "mydb",
collectionName: "States",
ConnectionStringSetting = "CosmosDB",
LeaseCollectionName = "leases",
CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents, ILogger log)
{
if (documents != null)
{
Document currentDoc = documents[documents.Count-1];
Document previousDoc;
if (documents.Count == 1)
{
previousDoc = // Fetch previous document from database, based on timestamp
}
else
{
previousDoc = documents[documents.Count-2];
}
if (currentDoc.MyProperty != previousDoc.MyProperty) // Doesn't work but you get my drift
{
log.LogInformation("Property 'MyProperty' has been modified");
// Do something
}
}
}
在触发CosmosDBTrigger的情况下,显然我们知道集合中有一个附加项,但我们不完全知道哪些属性已更改。示例代码是处理此问题的有效方法吗?还是有更好的方法?
谢谢!