2

考虑以下数据库文档:

在此处输入图像描述

我需要将一个元素推送到数组突出显示的字段“角色”。

我已经尝试了下面的代码,但没有成功。我需要知道使用哪个命令代替“SelectWhere”...

patches.Add(new ScriptedPatchCommandData
                {
                    Key = "Users/" + (mp.EnableChangeUserName ? user.ProviderUserKey : username),
                    Patch = new ScriptedPatchRequest
                    {
                        Script = @"
                                var app = this.Applications.SelectWhere(function(application){ 
                                    return application.Key == appKey;
                                });
                                if(app != null) { app.Roles.PushAll(roles) }",
                        Values = { { "appKey", mp.ApplicationKey }, {"roles", roleNames} }
                    }
                });

建议?

4

1 回答 1

1

这应该可以解决问题:

for (var i = 0; i < this.Applications.length; i++)
{
  var app = this.Applications[i];
  if (app.Key == appKey)
  {
    app.Roles = app.Roles.concat(roles);
  }
}

在 Raven Management Studio 中进行测试时,您似乎无法在“参数”窗口中表示数组,因此我不得不将其作为字符串输入["foo","bar"]并对脚本稍作更改:

...   .concat(eval(roles))
于 2013-01-22T17:38:13.820 回答