我正在开发一个后端带有 RESTful api 的 Javascript Web 应用程序 (SPA)。在我的客户端数据上下文中,我想将对象添加到我的模型图中,然后将整个图一次发送到服务器。
假设以下示例:
我的模型中有一个Person
对象,它本身有一个 say 数组PhoneNumbers
作为属性。现在我Person
从 api 加载一个用于编辑并将其映射到我的模型。假设我想将一些电话号码对象添加到我的PhoneNumbers
. 为此,我将每个数字(例如{"id": 0, "number": 6536652226}
id 为零)添加到我的客户端模型中,并在用户单击保存时将整个图形发送到服务器。在服务器中,我将 id 为零的对象(新对象)添加到具有自动递增 id 的数据库中。
我正在根据教程做我的项目。他们做这样的事情来将对象添加到上下文中:
var items = {},
// returns the model item produced by merging json obj into context
mapJsonToContext = function (json) {
var id = mapper.getJsonId(json);
var existingItem = items[id];
items[id] = mapper.fromDto(json, existingItem); //returns the mapped obj
return items[id];
},
add = function (newObj) {
items[newObj.id()] = newObj;
}
问题是,如果我使用这种方法,我将无法通过 id 删除客户端中新添加但尚未保存的项目,因为所有 id 都为零!
有什么建议可以解决这个问题,还是我需要一种完全不同的方法?