修补ravendb集合文档,在数组项上添加$ type

时间:2018-07-25 10:09:47

标签: c# ravendb patch

我在Ravendb 3.5上有一个名为Bills的集合,该集合具有一个ItemsSale.Items)的数组。我必须修补项目,并添加$type,因为我已将集合从Item的集合移至ISaleItem的集合,所以我需要告诉Ravendb应该将哪个具体类将项目序列化为。

我必须修补现有文档,并添加默认文档。我必须从

{
    "Id":"1",
    "Sale":{
        "Date":"2018-05-01",
        "Operator":"Pete",
        "Items":[
            {
                "SKU":"ab01",
                "price":1000
            },
            {
                "SKU":"ab02",
                "price":1000
            },
            {
                "SKU":"ab03",
                "price":1000
            }

        ]
    }

}

{
    "Id":"1",
    "Sale":{
        "Date":"2018-05-01",
        "Operator":"Pete",
        "Items":[
            {
                "$type":"MyApp.Item,Myapp.Models",
                "SKU":"ab01",
                "price":1000
            },
            {
                "$type":"MyApp.Item,Myapp.Models",
                "SKU":"ab02",
                "price":1000
            },
            {
                "$type":"MyApp.Item,Myapp.Models",
                "SKU":"ab03",
                "price":1000
            }

        ]
    }

}

如何编写补丁脚本(js或c#)来做到这一点? 谢谢

编辑:我已经找到了该解决方案,该解决方案将在ravendbstudio的补丁程序页面中执行:

this.Sale.Items.forEach(function(el)
{
    el.$type="MyApp.Item,Myapp.Models";

});

请根据需要改善我的解决方案。

1 个答案:

答案 0 :(得分:0)

使用以下方法通过ravendb studio修补集合:

if(this.Sale != null && this.Sale.Items != null && this.Sale.Items.length > 0)
{
    this.Sale.Items.Map(function(item){
        item["$type"] = "MyApp.Item,Myapp.Models";

        return item;
    });
}