Breeze Query: сеть показывает, что данные возвращаются, но в результатах JavaScript содержится пустая модель. - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь получить данные с сервера, используя breeze js. При выполнении кода в приведенном ниже фрагменте контроллера он попадает на сервер и возвращает клиенту правильные данные (проверено в инструментах Chrome Network). Однако если вы проанализируете data.results в обработчике обещаний, модель в результатах будет выглядеть как новая версия сущности со всеми значениями по умолчанию для полей (нули, ноль и т. Д.). В консоли не отображаются ошибки.

Это происходит только в том случае, если вы переходите непосредственно на эту страницу. Если вы перейдете на главную страницу сайта, перейдите на эту страницу, все работает правильно. Похоже, что при загрузке сайта возникает какое-то состояние гонки, но я не совсем уверен, где искать.

Есть идеи?

    //From tnDataContext
    function getFromAllTasks(criteria, orderBy, take, skip) {
        var predicates = getPredicatesFromTaskCriteria(criteria);

        if (!orderBy)
            orderBy = 'taskStatus.taskInboxSortOrder, taskPriority.priorityLevel, endDueDate DESC';

        var predicate = breeze.Predicate.and(predicates);
        var query = breeze.EntityQuery.from('Tasks')
                    .where(predicate)
                    .expand('parentTask, taskNotes')
                    .orderBy(orderBy)
                    .inlineCount()
                    .take(take)
                    .skip(skip);

        $rootScope.appProcesses++;
        return em.executeQuery(query).finally(function () {
            $rootScope.appProcesses--;
        });
    }

    //From Angular Page Controller
    return tnDataContext.getFromAllTasks(criteria, sortOrder, take, skip)
            .then(function (data) {
                if (data.results.length > 0) {
                    tasks = data.results;
                    $scope.task = tnDataContext.getEntity('Task', id);
                    $scope.childTasks = tasks.filter(function (t) {
                        return t.taskId != id;
                    });

                    determineCanUseActions($scope.task.taskType.taskTypeEntityTypes[0]);
                }
            });
...