Je n'ai aucune idée de ce qui ne va pas dans mon application. J'essaie de mettre à jour un profil d'utilisateur. Si un utilisateur a déjà un profil, il doit afficher les valeurs actuelles du profil. J'ai un simplepleschema attaché à la collection utilisateur. J'ai une aide de modèle: p> J'ai un crochet automatique p> et enfin la publication suivante: p> et voici la collection: Je suis sûr que l'objet utilisateur est transmis dans la publication. Je ne peux pas mettre à jour le profil: Obtenir l'erreur suivante (à partir d'AutoForm Débogou): P> Update Error: Object {$set: Object}
$set: Object
profile.firstName: "test_firstname"
profile.gender: "Female"
profile.lastName: "test_lastname"
profile.organization: "test_organisation
"username: "test_username"
3 Réponses :
Vous devez changer votre avant AutoForm Hooks .
var hooksObject = { before: { // Replace `formType` with the form `type` attribute to which this hook applies formType: function(doc) { // Potentially alter the doc doc.foo = 'bar'; // Then return it or pass it to this.result() return doc; (synchronous) //return false; (synchronous, cancel) //this.result(doc); (asynchronous) //this.result(false); (asynchronous, cancel) } },
Je devrais en effet avoir vu ça. Merci d'avoir souligné! Cependant, même après avoir changé à votre suggestion, cela ne fonctionne pas. Je peux insérer de nouveaux utilisateurs à Mongo, mais je ne peux pas sembler mettre à jour les utilisateurs existants. Dans l'AutoHook, j'ai une console.log qui génère le doc. Je ne vois pas d'erreurs, mais cela semble en quelque sorte comme si la base de données Mongo n'est pas mise à jour. Des idées?
Pas vraiment. La meilleure chose à faire serait de créer un exemple de reproductible minimal alors que cette question est loin de celle-ci. Bien que cela va créer une question à laquelle plus de personnes seront en mesure d'aider, sa valeur est également dans le processus, comme en le découpant, vous pouvez trouver la solution vous-même. Créez un exemple qui n'utilise pas les crochets d'autoforme, ne nécessite pas de flux: routeur, alanning: rôles, etc. Il y avait beaucoup à trébucher pour trouver le problème ci-dessus, et quelque chose que je me moque peut de masquer. un autre problème que vous avez. Quoi qu'il en soit, je vais essayer d'obtenir ce que j'ai travaillé à Météorpad et publier un lien.
J'ai vu une autre erreur du flux: le routeur n'aiment pas Meteor.userid () dans le bloc d'abonnements de route, car le routeur n'est pas réactif. Cependant, je crois que cela est assez inoffensif, car il utilisera toujours la valeur actuelle lorsqu'elle exécute - mais ne répondra pas si la valeur change.
Voici le Meteorpad
J'ai essayé ce que vous avez mis sur Meteorpad, et cela semble fonctionner ne le fait pas?
C'est ce que je pensais! ;)
Il y a quelques petits problèmes, donc je ne sais pas comment aborder votre problème, mais voici quelques points à traiter.
Méthode de publication forte> p> Remarque: Si vous supprimez la fonction de publication Utiliser global Helper Voici comment mettre à jour votre modèle pour utiliser
utilisateur code> n'est jamais utilisé. Essayiez-vous d'utiliser
ce? li>
userid code> en tant que paramètre de fonction depuis que vous avez
Accès à
this.userid code> li>
météor.publish (null, ...) code> afin qu'il remplace la publication utilisateur actuelle par défaut li>
ul>
usersallForCustomer code>, n'oubliez pas de le supprimer de la route
UpdateCustomerProfile EM> P> P >
CoururalUser code> strud> p>
CoururalUser code> au lieu de
GetUserers CODE> P>
<template name="updateCustomerProfile">
<div class="container">
<h1>Edit User</h1>
{{#with currentUser}}
{{#autoForm collection="Users" doc=this id="profileForm" type="update"}}
<fieldset>
{{> afQuickField name='username'}}
{{> afObjectField name='profile'}}
</fieldset>
<button type="submit" class="btn btn-primary">Update User</button>
<a class="btn btn-link" role="button" href="{{pathFor 'adminDocuments'}}">Back</a>
{{/autoForm}}
{{else}}
Nothing
{{/with}}
</div>
</template>
Le météorpad a en effet résolu le problème. Il y avait une erreur dans l'assistant. En fait, le code d'origine était: donc dans l'extrait ci-dessus, j'utilisais un "événement" au lieu d'un "assistant". Ci-dessous est le code correct: p>
Pouvez-vous poster la partie pertinente de votre schéma?
Sûr. J'ai édité la question initiale pour l'inclure.
Utilisez-vous un paquet d'insécurité? Sinon, assurez-vous de configurer vos autorisations de collecte afin que les profils d'utilisateur puissent être mis à jour par des utilisateurs autorisés.