CosmosDB保存/更新触发器以增加计数

时间:2018-01-20 07:19:45

标签: javascript json azure ecmascript-6 azure-cosmosdb

我们的 Cosmos 演示数据库

中有以下集合
  1. FOO
  2. foo 接受提交的json。

    每次提交给foo.json

    {
    "ratingsubmission392": {
        "rating": 5,
        "SubmissionDate": "2018-01-09T09:25:43.511Z",
        "status": "submitted",
        "id": "TestDaily1"
    }}
    

    我们希望将计数增加1

    on

    submissionCount++
    

    这可以在Cosmos DB中完成,只使用触发器和没有Function app的Javascript代码或定期读取foo的 Cron作业

    如果是,怎么样?

1 个答案:

答案 0 :(得分:1)

此处使用Cosmos DB触发器无法满足您的要求,因为不允许触发器对当前集合之外的资源进行操作。

但您可以使用JSFiddle轻松自行实现。

这样的事情:

var ratingsubmission392 = { 
    "rating": 5,
    "SubmissionDate": "2018-01-09T09:25:43.511Z",
    "status": "submitted",
    "id": "TestDaily7"
};

var collLink = "dbs/mydb/colls/foo";

client.createDocument(collLink, ratingsubmission392, (err, doc) => {
    if(err) return console.log(err);
    console.log('Created Document with id: ', doc.id);
    updateBar();
});

function updateBar() {

    var docLink = "dbs/mydb/colls/bar/docs/viz";
    client.readDocument(docLink, (err, doc) => {
        if(err) return console.log(err);

        doc.submissionCount = doc.submissionCount++;

        client.replaceDocument(docLink, doc, (err, result) => {
            if(err) return console.log(err);
            console.log('replaced document');
        });
    });
}