Ember Data Serializer TypeError while saving record [SOLVED]


#1

I am using JSONAPISerializer/JSONAPIAdapter for my backend(JSONAPI spec conform). All GET requests are working fine. I have issues with saving records. While saving a record the serializer creates this error: TypeError: Invalid Fullname, expected:type:namegot: model:(…)

Strangely, the POST request is send properly and saved at the backend but Ember stucks. Here are some details for serializer and adapter:

export default DS.JSONAPIAdapter.extend({
	host: 'http://localhost:1313',
	namespace: 'api/page',
	pathForType: function(modelName) {
    	return "regionen";
  },
  createRecord: function(store, type, snapshot) {
      console.log("-->", type.modelName);
      let url = `${this.host}/${this.namespace}/${snapshot.attr('path')}`;
      let data = {};
      let serializer = store.serializerFor(type.modelName);
      serializer.serializeIntoHash(data, type, snapshot);
      return $.ajax({
        type: 'POST',
        url: url,
        data: JSON.stringify(data)
      });
  }, ...

export default DS.JSONAPISerializer.extend({
  	normalize(modelClass, resourceHash, prop) {
  		resourceHash.attributes.bandnummer = `${resourceHash.attributes.metadata.bandnummer}`
  		resourceHash.attributes.title = `${resourceHash.attributes.metadata.title}`
  		return this._super(...arguments)
  	},
  	serializeIntoHash(hash, typeClass, snapshot) {
		hash["page"] = this.serialize(snapshot);
	},
	serialize(snapshot) {
		let serializedData = {
			"attributes": {
				"path": snapshot.attr("path"),
				"metadata": {
					"title": snapshot.attr("title"),
					"bandnummer": snapshot.attr("bandnummer")   					
				},
				"content": snapshot.attr("content")
			}			
		};

		if (snapshot.id) {
			serializedData.id = snapshot.id;
		};    		   			
		return serializedData;
	}
});

Any helpful suggestions to solve this?


#2

So the JSON API request and response are correct when you inspect it in the Network panel? I would set a breakpoint in normalize. You need to share more details about the error.


#3

By inspecting the POST request response, I’ve noticed that my api backend “CreateObject” handler left the resource type untouched. So the POST response got an empty type:"". Solving this, leads to proper behaviour of ember.

Thanks for debugging tip