Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使一个余烬数据模型适合多个表单?_Javascript_Ember.js_Ember Data - Fatal编程技术网

Javascript 如何使一个余烬数据模型适合多个表单?

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

我必须通过DS.store处理来自外部api(创建和更新)的HTTP方法。服务器需要创建方法的其他字段,而不是更新方法的字段。例如:

json中POST的预期参数:

{
  "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方法。我已经做出了回答,以便其他类似问题可以参考正确的位置。