如何使一个 Ember 数据模型适合多种形式?
How to make one Ember data model fits for multiple forms?
我必须通过 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
}
即使预期键没有空值或未定义值,我的服务器 returns 400(无法识别的参数 "subdomian"、"person")。
不幸的是,我无权访问服务器,所以我必须只向服务器传递预期的参数。我在序列化器中也尝试过类似的东西:
attrs: {
person: { serialize: false },
subdomain: { serialize: false },
}
但它自然会为 PUT 请求创建错误...
有什么方法可以只传递我的 html 表单中包含的参数,或者删除在向服务器请求之前具有 null/undefined 值的参数?我知道,我可以使用 DS.store 以外的东西,但我想在客户端和服务器之间只有一个中间人的情况下使用清晰的代码。
在 Ember 数据中,适配器确定数据如何持久保存到后端数据存储,例如 URL 格式和 headers 用于 REST API。
如果您有一个模型与后端通信的规则比其他模型有特殊规则,您可以通过 运行 命令
创建模型特定的适配器
ember generate adapter adapter-name
有关自定义适配器的详细信息,请阅读下面的link,
https://guides.emberjs.com/v2.6.0/models/customizing-adapters/
我必须通过 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
}
即使预期键没有空值或未定义值,我的服务器 returns 400(无法识别的参数 "subdomian"、"person")。 不幸的是,我无权访问服务器,所以我必须只向服务器传递预期的参数。我在序列化器中也尝试过类似的东西:
attrs: {
person: { serialize: false },
subdomain: { serialize: false },
}
但它自然会为 PUT 请求创建错误... 有什么方法可以只传递我的 html 表单中包含的参数,或者删除在向服务器请求之前具有 null/undefined 值的参数?我知道,我可以使用 DS.store 以外的东西,但我想在客户端和服务器之间只有一个中间人的情况下使用清晰的代码。
在 Ember 数据中,适配器确定数据如何持久保存到后端数据存储,例如 URL 格式和 headers 用于 REST API。
如果您有一个模型与后端通信的规则比其他模型有特殊规则,您可以通过 运行 命令
创建模型特定的适配器ember generate adapter adapter-name
有关自定义适配器的详细信息,请阅读下面的link,
https://guides.emberjs.com/v2.6.0/models/customizing-adapters/