我在Ravendb 3.5上有一个名为Bills
的集合,该集合具有一个Items
(Sale.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";
});
请根据需要改善我的解决方案。
答案 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;
});
}