I umfassen derzeit eine Datenbank mit 2 Objekte haben:Ember JS: Adapter Customizing mehrere Parameter
- Rolle
- Permission
ONE Rolle können viele Berechtigungen. Im Moment habe ich meine Rolle Adapter Setup als:
export default DS.RESTAdapter.extend(DataAdapterMixin, {
namespace: 'v1',
host: ENV.APP.API_HOST,
authorizer: 'authorizer:application',
pathForType: function(type) {
return 'staff/roles';
}
});
standardmäßig, wenn eine Erlaubnis zu einer Rolle hinzugefügt wird, diese Anforderung erzeugt:
Anfrage:
PUT /v1/staff/roles/1
Körper:
{
"name": "name_of_role"
"permissions": [
{
"id": "3",
"name": "name_of_permission"
},
...
]
}
Ich möchte meinen Adapter anpassen, um eine Anfrage zu erstellen, die stattdessen so aussieht:
Anfrage:
PUT /v1/staff/roles/1/permissions/3
Körper:
<None>
Kann mir bitte jemand sagen, wie ich über das tun dies gehen kann? Die Aktualisierung der Server-API zur Aufnahme von Ember JS ist leider nicht möglich.
UPDATE:
Basierend auf Ryans Antwort, hier ist ein (ich es chaotisch nennen würde) Abhilfe, die den Trick für mich getan hat.
offen für Vorschläge für die Herstellung dieser elegantere:
export default DS.RESTAdapter.extend(DataAdapterMixin, {
namespace: 'v1',
host: ENV.APP.API_HOST,
authorizer: 'authorizer:application',
pathForType: function(type) {
return 'staff/roles';
},
updateRecord: function(embestore, type, snapshot) {
var roleID = snapshot.id;
var permissionID = snapshot.adapterOptions.permissionID;
var url = ENV.APP.API_HOST + "/v1/staff/roles/" + roleID + "/permissions/" + permissionID;
return new Ember.RSVP.Promise(function(resolve, reject){
Ember.$.ajax({
type: 'PUT',
url: url,
headers: {'Authorization': 'OAUTH_TOKEN'},
dataType: 'json',
}).then(function(data) {
Ember.run(null, resolve, data);
}, function(jqXHR) {
jqXHR.then = null; // tame jQuery's ill mannered promises
Ember.run(null, reject, jqXHR);
});
});
},
});
Danke für die tollen Zeiger @ryan. Fügt meiner Antwort ein Update mit der verwendeten Lösung hinzu. Folge deiner Richtung ziemlich genau. – unicornherder