Breeze: SaveChanges客户端不调用SaveChanges服务器-执行后仍然成功
本文关键字:SaveChanges 执行 成功 服务器 客户端 调用 Breeze | 更新日期: 2023-09-27 18:12:51
我不是在寻找基于代码的解决方案,而是对我遇到的问题有一个解释。
对于我正在开发的应用程序,后端是我的领域,我的同事负责前端。我的同事离开时没有任何文档可以帮助我解决这个问题,因此我要求StackOverflow提供一点帮助。
应用程序正在运行,一切正常,除了一个比特。在应用程序中的某一点上,客户端微风调用SaveChanges方法,该方法(应用程序中的其他任何地方)触发服务器上的SaveChanges方法。在这个特定的实例中,SaveChanges方法返回到. success,并在控制台中传递保存更改的(自定义?)通知。然而,服务器没有收到任何呼叫,在网络日志中我没有看到任何呼叫。你能告诉我是什么原因导致的吗?这样我就能理解以后的问题了。提前感谢。
function saveChanges(request, options, onSuccess, onFailure) {
if (options) {
if (!options.hasFlight) {
_.forEach(request.FlightRequests, function (val) {
removeFlight(request, val, true);
});
}
if (!options.hasFerry) {
_.forEach(request.FerryRequests, function (val) {
removeFerry(request, val);
});
}
if (!options.hasEurotunnel) {
_.forEach(request.EuroTunnelRequests, function (val) {
removeEurotunnel(request, val);
});
}
if (!options.hasRentalCar) {
_.forEach(request.RentalCarRequests, function (val) {
removeRentalcar(request, val);
});
}
if (!options.hasTaxi) {
_.forEach(request.TaxiRequests, function (val) {
removeTaxi(request, val);
});
}
if (!options.hasAccommodation) {
_.forEach(request.Accommodations, function (val) {
removeAccommodation(request, val);
});
}
}
return manager.saveChanges()
.then(saveSucceeded)
.catch(saveFailed);
function saveSucceeded(result) {
console.log('Successfully saved all changes');
onSuccess(result);
}
function saveFailed(error) {
var reason = error.message;
var detail = error.detail;
if (error.entityErrors) {
handleSaveValidationError(error);
} else if (detail && detail.ExceptionType &&
detail.ExceptionType.indexOf('OptimisticConcurrencyException') !== -1) {
reason = 'Another user, perhaps the server itself, may have deleted '
+ 'the request you are currenty working on. Please try saving again, '
+ 'or reload this web page.';
} else {
reason = 'Failed to save changes: ' + reason + ' You may have to reload this web page.';
}
console.log(detail.ExceptionType);
console.log(error, reason);
onFailure(error, reason);
}
}
这段代码对于所有保存都运行良好,除了应用程序中的这一点。
如果您在manager.saveChanges()
行之前检查manager.hasChanges()
,它是否返回false?如果是这样,则不会有请求发送到服务器(此处为breezejs代码)。
下面是一个将hasChanges方法与saveChanges结合使用的示例。