public ArticleByRolesTransformer() { TransformResults = results => from result in results let roles = ParameterOrDefault("roles", new string[] { "guest" }).Value<string[]>() select new Result { Id = result.Id, Name = result.Name, Actions = new Dictionary<string, bool> { {"read", result.Roles["read"].ContainsAny(roles) }, {"edit", result.Roles["edit"].ContainsAny(roles) } } }; }
var results = await RavenSession.Query<Article>() .Where(n => n.Owner == node.ToIdentity<Article>()) .Where(n => n.Roles["read"].ContainsAny(roles)) .Where(n => n.Online) .TransformWith< Raven.ArticleByRolesTransformer, Raven.ArticleByRolesTransformer.Result >() .AddTransformerParameter("roles", RavenJToken.FromObject(roles)) .ToListAsync();
Url: "/databases/testing-isolated/indexes/dynamic/Articles?&query=%28Owner%3Aarticles%2F0%29%20AND%20%28%20%28Roles.read%3Aplayer%20OR%20Roles.read%3Astaff%20OR%20Roles.read%3Aadmin%29%29%20AND%20%28Online%3Atrue%29&pageSize=128&SortHint-Online=String&resultsTransformer=ArticleByRolesTransformer&tp-roles=[%0D%0A%20%20%22player%22,%0D%0A%20%20%22staff%22,%0D%0A%20%20%22admin%22%0D%0A]"System.InvalidOperationException: The transform results function failed.Doc 'articles/1', Error: Unable to find suitable conversion for System.String since it is not predefined and does not implement IConvertible.Doc 'articles/8', Error: Unable to find suitable conversion for System.String since it is not predefined and does not implement IConvertible.Doc 'articles/15', Error: Unable to find suitable conversion for System.String since it is not predefined and does not implement IConvertible.Doc 'articles/22', Error: Unable to find suitable conversion for System.String since it is not predefined and does not implement IConvertible.Doc 'articles/29', Error: Unable to find suitable conversion for System.String since it is not predefined and does not implement IConvertible.Doc 'articles/36', Error: Unable to find suitable conversion for System.String since it is not predefined and does not implement IConvertible. at Raven.Database.Actions.QueryActions.DatabaseQueryOperation.Execute(Action`1 onResult) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Actions\QueryActions.cs:line 289 at Raven.Database.Actions.QueryActions.<>c__DisplayClasse.<Query>b__a(IStorageActionsAccessor accessor) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Actions\QueryActions.cs:line 119 at Raven.Storage.Esent.TransactionalStorage.ExecuteBatch(Action`1 action, EsentTransactionContext transactionContext) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Storage\Esent\TransactionalStorage.cs:line 850 at Raven.Storage.Esent.TransactionalStorage.Batch(Action`1 action) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Storage\Esent\TransactionalStorage.cs:line 811 at Raven.Database.Actions.QueryActions.Query(String index, IndexQuery query, CancellationToken externalCancellationToken) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Actions\QueryActions.cs:line 108 at Raven.Database.Queries.DynamicQueryRunner.ExecuteActualQuery(IndexQuery query, DynamicQueryMapping map, Tuple`2 touchTemporaryIndexResult, String realQuery, CancellationToken token) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Queries\DynamicQueryRunner.cs:line 64 at Raven.Database.Queries.DynamicQueryRunner.ExecuteDynamicQuery(String entityName, IndexQuery query, CancellationToken token) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Queries\DynamicQueryRunner.cs:line 42 at Raven.Database.Queries.DynamicQueryExtensions.ExecuteDynamicQuery(DocumentDatabase self, String entityName, IndexQuery indexQuery, CancellationToken token) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Queries\DynamicQueryExtensions.cs:line 19 at Raven.Database.Server.Controllers.IndexController.PerformQueryAgainstDynamicIndex(String index, IndexQuery indexQuery, Etag& indexEtag, HttpResponseMessage msg, CancellationToken token) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Server\Controllers\IndexController.cs:line 713 at Raven.Database.Server.Controllers.IndexController.ExecuteQuery(String index, Etag& indexEtag, HttpResponseMessage msg, CancellationToken token) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Server\Controllers\IndexController.cs:line 607 at Raven.Database.Server.Controllers.IndexController.GetIndexQueryResult(String index, CancellationToken token) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Server\Controllers\IndexController.cs:line 578 at Raven.Database.Server.Controllers.IndexController.IndexGet(String id) in c:\Builds\RavenDB-Stable-3.0\Raven.Database\Server\Controllers\IndexController.cs:line 182 at lambda_method(Closure , Object , Object[] ) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)--- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()--- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()--- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext()
Hibernating Rhinos Ltd
Oren Eini l CEO l Mobile: + 972-52-548-6969
Office: +972-4-622-7811 l Fax: +972-153-4-622-7811
--
You received this message because you are subscribed to the Google Groups "RavenDB - 2nd generation document database" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ravendb+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.