我必须通过DS.store处理来自外部api的HTTP方法(创建和更新)。服务器期望创建方法的其他字段,而不是更新方法。例如:对于如何使一个Ember数据模型适合多种形式?
POST预期PARAMS在JSON:
{
"name": "string",
"email": "string",
"login": "string",
"password": "string",
}
预计为PUT方法PARAMS:
{
"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": "[email protected]",
"login": "login",
"password": "passw",
"subdomain": null,
"person": null
}
甚至,如果不期望键有null或未定义的值,我的服务器返回400(未识别参数 “subdomian” ,“人”)。 不幸的是,我没有访问服务器,所以我必须传递给服务器只有预期的参数。我也试过在串行器是这样的:
attrs: {
person: { serialize: false },
subdomain: { serialize: false },
}
但自然也被创造PUT请求错误...... 有PARAMS包含在我的HTML表单,或删除参数,可以具有空的东西办法只能通过/请求到服务器之前未定义的值?我知道,我可以使用除DS.store之外的其他东西,但我希望在客户端和服务器之间只有一个中间人使用清晰的代码。
必须尝试使自己的适配器? –
谢谢,我创建了新的适配器,并更改了ajax方法。 –
我已经把它作为答案,以便其他有类似的问题可以参考正确的地方。 –