在脚本补丁中加载文档并创建对象

时间:2015-03-23 09:45:02

标签: ravendb

我有一个带有Payments集合的事件对象。当事件被取消时,我需要将这些付款添加到相应的用户对象退款集合中。根据文档,我得到了以下原理图脚本:

_(this.Payments).forEach(function(payment) {
  var user = LoadDocument(payment.UserId);
  user.Refunds.push(new { EventId = this.Id, Payment = payment });                                    
}

这个原理图脚本中有两件事我没有在文档中找到正确的方法: 1.按Id加载另一份文件(第2行) 2.创建新的json-object(第3行)

1 个答案:

答案 0 :(得分:2)

LoadDocument()是正确的,但加载的文档在加载到修补程序中时,不会被任何工作单元自动跟踪。

你必须告诉Raven更新/存储该文件:

var user = LoadDocument(payment.UserId);
user.Refunds.push({ EventId = this.Id, Payment = payment }); 

PutDocument(user.UserId, user);

如果您真的想从补丁中执行此操作,则上述操作可能会有效。但是,这似乎是一个更具域特定的操作,并且可能更好地模拟应用程序代码中的行为(即引发事件并从代码向用户对象添加退款)。不是100%确定Raven如何处理补丁中的交易等等......

编辑:对于您的第二个问题:您不需要使用新的'关键字