c# - 如何使用 RavenDB 中的 eval 功能将项目添加到数组?

标签 c# push eval ravendb patch

考虑以下数据库文档:

enter image description here

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

我试过下面的代码但没有成功。我需要知道使用哪个命令代替“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} }
                    }
                });

建议?

最佳答案

这应该可以解决问题:

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))

关于c# - 如何使用 RavenDB 中的 eval 功能将项目添加到数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14446430/

相关文章:

c# - 如何在 C# 中使用线程读取和解析非常大的平面文件?

c# - 使用相同类型的类定义 where 关键字

javascript - 推送方式显示不正确

javascript - 使用 push() 后,数组被记录为数字

linux - Bash - 如何执行从不同脚本输出的脚本

c# - 是否可以使用 C# 以编程方式将 bacpac/bak 从 blob 存储恢复到 azure sql

C# StreamReader 可以检查当前行号吗?

jquery - Css Float问题,不同高度的div

javascript - 为什么 object.eval() 有效,方括号返回未定义?

python - 将数据框单元格作为变量传递