Breeze Error: стратегия слияния «запрещено»

Я получаю эту ошибку при запуске примера приложения для AngularJS с веб-сайта Breeze.

Это код для контроллера breezectl.js:

'use strict';

angular.module('mean').controller('breezeController', ['$scope', 'Global', 'dataservice',
    function($scope, Global, dataservice) {
        $scope.global = Global;
        $scope.breeze = {
            name: 'Breeze Sample'
        };

        //$scope.results = dataservice;

        function getProducts() {
            function success(data) {
                $scope.results = data;
            }
            function failed(error) {
                $scope.results = error.message;
            }

            dataservice.getAllProducts()
                .then(success)
                .catch(failed); 
        }

        getProducts();
    }
]);

dataservice.getAllProducts() входит в ветку catch(failed) с этим сообщением об ошибке: «MergeStrategy« Disallowed »не позволяет вам присоединять объект, когда объект с тем же ключом уже подключен»

Это код для dataservice.js:

'use strict';

angular.module('mean').factory('dataservice', ['breeze', 'entityManagerFactory', 
    function(breeze, entityManagerFactory) {
        var manager = entityManagerFactory.newManager();

        function getAllProducts(){
            function success(data) {
                return data.results;
            }

            return breeze.EntityQuery.from('Products')
                .using(manager).execute()
                .then(success);
        }


        var service = {
            getAllProducts: getAllProducts
        };
        return service;
    }
]);

Примечание. Прямой вызов продуктов из Restful API (localhost:3000/breeze/northwind/Products) работает правильно и возвращает набор объектов Json, представляющих все продукты в коллекции.


person jotavans    schedule 08.05.2014    source источник
comment
Похоже, вы пытаетесь добавить новую сущность с чем-то вроде manager.createEntity() и использовать тот же идентификатор (ноль — это тот же идентификатор, кстати)   -  person PW Kad    schedule 09.05.2014
comment
@PWKad Большое спасибо за ответ, но я просто хочу перечислить. Извините, но это не проблема. У меня больше нет кода.   -  person jotavans    schedule 13.05.2014
comment
Можете ли вы показать нам, как выглядят метаданные Breeze для объекта Product?   -  person Steve Schmitt    schedule 14.05.2014


Ответы (1)


Стив Шмитт прав. У моего metadata.json было свойство defaultResourceName с именем, отличным от имени коллекции базы данных. Я изменил «Продукты» на «Продукты», и это работает.

Большое спасибо всем вам.

person jotavans    schedule 15.05.2014