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

Load Document and create object inside script patch

我有一个包含付款集合的事件对象。当事件被取消时,我需要将这些付款添加到适当的用户对象退款集合中。根据文档,我得出以下示意图脚本:

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

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

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

您还必须告诉 Raven update/store 该文件:

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

PutDocument(user.UserId, user);

如果你真的想从补丁中做到这一点,上面的方法可能会奏效。然而,这似乎是一个更具体的领域操作,可能 更好地模拟应用程序代码中的行为(即引发事件并将退款添加到代码中的用户对象)。不能 100% 确定 Raven 如何处理补丁内的事务等等...

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