Javascript 手动保存Breeze实体并更新keyMappings
我想在Breeze中手动保存实体。我们只是没有选择,因为我试图争取我的意见,使用SaveChangesJObject saveBundle,并且需要直接使用第三方Web API,为POST/PUT请求提供特定的URL 所以我基本上是在EntityManager.getChanges中循环,然后处理修改、添加和删除的实体 我可以处理修改后的文件,没有任何问题。但是,在添加之后,我知道在成功保存后添加新实体时需要更新keyMappings,但在JavaScript中找不到任何关于如何手动执行此操作的文档 我还想看看是否有任何返回错误的例子。基本上我想挂接这个电话:Javascript 手动保存Breeze实体并更新keyMappings,javascript,angularjs,breeze,Javascript,Angularjs,Breeze,我想在Breeze中手动保存实体。我们只是没有选择,因为我试图争取我的意见,使用SaveChangesJObject saveBundle,并且需要直接使用第三方Web API,为POST/PUT请求提供特定的URL 所以我基本上是在EntityManager.getChanges中循环,然后处理修改、添加和删除的实体 我可以处理修改后的文件,没有任何问题。但是,在添加之后,我知道在成功保存后添加新实体时需要更新keyMappings,但在JavaScript中找不到任何关于如何手动执行此操作的
$http(params).then(
function (response) { // success
console.log(response);
// update key mappings if its an "Added" somehow
// entityAspect.acceptChanges();
dfd.resolve("something eventually");
},
function () { // error
// added error object here and reject changes on this entity? or just show error message?
dfd.reject("error");
});
return dfd.promise;
如果有人想知道,我只检查entityAspect.entityState.isAdded方法。获取从我的第三方返回的新身份,并相应地更新id。我们的系统稍微好一点,因为我们对所有实体都有一个设置键 从代码角度看,dfd是一个$q延迟:
$http(params).then(function (response) { // success
// on add update the instance id with the new instance id
if (entityState.isAdded()) {
var newId = response.data.changedInstance.newId;
entity.Id = newId ;
}
entityAspect.acceptChanges();
dfd.resolve(response.data);
},
function (response) { // error
dfd.reject(response.data);
});