Ember.js l'Erreur “échec de l'Assertion: Vous devez inclure un `id` dans une table de hachage passé à "pousser"”
Je reçois ce message d'erreur après avoir enregistrer un message (titre, texte) à une base de données mongodb via une API REST écrite Expresse et actualiser le navigateur. J'ai déjà mis ma clé primaire '_id' et ont été la lecture éventuellement de normaliser les données?
Ici est la charge utile à partir du serveur (1 seul post en db):
{
"posts": [
{
"title": "The Title",
"text": "Lorem ipsum",
"_id": "52c22892381e452d1d000010",
"__v": 0
}
]
}
Le contrôleur:
App.PostsController = Ember.ArrayController.extend({
actions: {
createPost: function() {
//Dummy content for now
var to_post = this.store.createRecord('post', {
title: 'The Title',
text: 'Lorem ipsum'
});
to_post.save();
}
}
});
Le modèle:
App.Post = DS.Model.extend({
title: DS.attr('string'),
text: DS.attr('string')
});
Sérialiseur:
App.MySerializer = DS.RESTSerializer.extend({
primaryKey: function(type){
return '_id';
}
});
Adaptateur:
App.ApplicationAdapter = DS.RESTAdapter.extend({
namespace: 'api'
});
Toute aide est très appréciée! S'il vous plaît laissez-moi savoir si vous avez besoin d'autres infos.
Grâce
comment avez-vous mis le primaryKey?
J'ai utilisé
Auriez-vous l'esprit en montrant la carte et sérialiseur code ci-dessus?
Bien sûr, j'ai ajouté sur le fond. Il me semble que je peut récupérer les données, mais j'obtiens une erreur pour chaque poste qui est retourné par l'api. Merci pour votre aide!
J'ai utilisé
DS.JSONSerializer.extend({ primaryKey: function(type) {return '_id';} });
Auriez-vous l'esprit en montrant la carte et sérialiseur code ci-dessus?
Bien sûr, j'ai ajouté sur le fond. Il me semble que je peut récupérer les données, mais j'obtiens une erreur pour chaque poste qui est retourné par l'api. Merci pour votre aide!
OriginalL'auteur songawee | 2013-12-31
Vous devez vous connecter pour publier un commentaire.
Lors de l'utilisation d'adaptateurs personnalisés/sérialiseurs le nom est important. Si vous souhaitez qu'elle s'applique à l'ensemble de l'application, il doit être appelé
ApplicationSerializer
Adaptateur:
Si vous voulez juste qu'elle s'applique à un seul modèle (cela s'applique à la carte)
Je viens de réaliser que la clé primaire est une fonction, elle doit être une simple propriété (voir ci-dessus) ou vous devriez virer de bord sur les
.property()
à la fin de la fonctionSuccès! Je vous remercie beaucoup pour votre aide! Ai-je ajouté .la propriété() et cela fonctionne.
primaryKey n'est pas appelée dans mon application, peut-être que cela a à voir avec une nouvelle version de ember-data?
Veuillez créer une nouvelle question et inclure toutes les informations pertinentes.
OriginalL'auteur Kingpin2k
J'ai eu ce même message d'erreur mais après un peu de débogage découvert qu'il était causé par mon API rest de ne pas retourner les objets sauvés json.
OriginalL'auteur Drew Nichols