private void UpdateRelated() { DatabaseCommands.GetDocumentsStartingWithAsync(Key + "/", 0, 15) .ContinueOnSuccess(items => { if (items == null) { return; } var linkModels = items.Select(doc => new LinkModel { Title = doc.Key, HRef = "/Edit?id=" + doc.Key }).ToArray(); Related.Set(linkModels); }); }
private void UpdateRelated() { if (string.IsNullOrEmpty(Key) || string.IsNullOrEmpty(Seperator)) { return; } var childrenTask = DatabaseCommands.StartsWithAsync(Key + Seperator, 0, 15) .ContinueOnSuccess(items => items == null ? new string[0] : items.Select(i => i.Key)); // find parent Ids var parentids = new List <string>(); var id = Key; var lastindex = id.LastIndexOf(Seperator, StringComparison.Ordinal); while (!string.IsNullOrWhiteSpace(id) && lastindex != -1) { id = id.Remove(lastindex); parentids.Add(id); lastindex = id.LastIndexOf(Seperator, StringComparison.Ordinal); } var parentsTask = ApplicationModel.Current.Server.Value.SelectedDatabase.Value.AsyncDatabaseCommands.GetAsync(parentids.ToArray(), null, metadataOnly: true) .ContinueOnSuccess(results => results.Results.Where(r => r != null).Select(r => r["@metadata"].SelectToken("@id").ToString())); TaskEx.WhenAll(childrenTask, parentsTask).ContinueOnSuccessInTheUIThread(t => { var linkModels = childrenTask.Result .Concat(parentsTask.Result) .OrderBy(key => key.Length) .Select(key => new LinkModel { Title = key, HRef = "/Edit?id=" + key }) .ToArray(); Related.Set(linkModels); }); }