Javascript 如何使一个余烬数据模型适合多个表单?
我必须通过DS.store处理来自外部api(创建和更新)的HTTP方法。服务器需要创建方法的其他字段,而不是更新方法的字段。例如: json中POST的预期参数:Javascript 如何使一个余烬数据模型适合多个表单?,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我必须通过DS.store处理来自外部api(创建和更新)的HTTP方法。服务器需要创建方法的其他字段,而不是更新方法的字段。例如: json中POST的预期参数: { "name": "string", "email": "string", "login": "string", "password": "string", } PUT方法的预期参数: { "name": "string", "subdomain": "string", "person": "str
{
"name": "string",
"email": "string",
"login": "string",
"password": "string",
}
PUT方法的预期参数:
{
"name": "string",
"subdomain": "string",
"person": "string",
}
显然,对于这些操作,我有其他的表单,但是DS.store从DS.model获取所有字段作为请求。我的模型:
export default DS.Model.extend({
login: DS.attr('string'),
password: DS.attr('string'),
name: DS.attr('string'),
subdomain: DS.attr('string'),
email: DS.attr('string'),
person: DS.attr('string'),
});
例如,POST请求如下所示:
{
"name": "somethingName",
"email": "something@something.fuu",
"login": "login",
"password": "passw",
"subdomain": null,
"person": null
}
即使不是预期的键具有null或未定义的值,我的服务器也会返回400(无法识别的参数“subdomian”、“person”)。
不幸的是,我没有访问服务器的权限,因此我必须只向服务器传递所需的参数。我在serializer中也尝试过类似的方法:
attrs: {
person: { serialize: false },
subdomain: { serialize: false },
}
但它自然会为PUT请求创建错误。。。
是否有什么方法可以只传递html表单中包含的参数,或者删除在请求到服务器之前具有空/未定义值的参数?我知道,我可以使用DS.store以外的东西,但我希望在客户端和服务器之间只有一个中间人的清晰代码。在Ember Data中,适配器确定如何将数据持久化到后端数据存储,例如REST API的URL格式和头 如果您有一个模型比其他模型具有与后端通信的特殊规则,则可以通过运行命令来创建特定于模型的适配器
ember generate adapter adapter-name
有关自定义适配器的更多信息,请阅读下面的链接
必须尝试制作自己的适配器吗?谢谢,我创建了新的适配器,并更改了ajax方法。我已经做出了回答,以便其他类似问题可以参考正确的位置。