【发布时间】:2014-05-08 20:20:33
【问题描述】:
从 Breeze 的网站运行 AngularJS 示例应用程序时出现此错误。
这是控制器briefctl.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) 分支并显示以下错误消息:“当已附加具有相同键的实体时,'Disallowed' 的 MergeStrategy 不允许您附加实体”
这是 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) 直接调用 Products 可以正常工作,并返回一组代表集合中所有产品的 Json 对象。
【问题讨论】:
-
听起来您正在尝试添加一个新实体,其中包含
manager.createEntity()之类的内容并使用相同的 ID(顺便说一句,null 是相同的 ID) -
@PWKad 非常感谢您的回答,但我只想列出。对不起,但这不是问题。我没有更多代码了。
-
您能否向我们展示一下 Product 实体的 Breeze 元数据是什么样的?
标签: node.js angularjs mongodb breeze mean-stack