J'utilise une fonction Cloud pour générer une courte URL unique sur un enregistrement de l'événement 'onWrite' et l'enregistrer. Cela fonctionne bien, mais lorsque je sauvegarde un enregistrement de mon application Ember à l'aide d'EmberFire, je récupère un modèle en tant qu'argument d'un rappel, mais l'URL de ce modèle n'est pas définie. Y a-t-il un moyen de renvoyer cela au client? Ou dois-je interroger l'enregistrement pour obtenir l'URL générée?EmberFire: Obtention de la propriété générée par Cloud Fonction lors de la sauvegarde de l'enregistrement
Voici comment mon code fonction Cloud ressemble:
exports.generateUrl = functions.database.ref('/tournaments/{tid}')
.onWrite(event => {
if (event.data.previous.exists()) {
return;
}
if (!event.data.exists()) {
return;
}
const url = shortid.generate();
return event.data.ref.update({ url });
});
Voici mon composant qui enregistre les données par la soumission de formulaire. J'utilise un module appelé ember-changeset pour gérer certaines validations, mais cela ne devrait pas être lié au problème.
export default Ember.Component.extend({
submit(e) {
e.preventDefault();
let snapshot = this.changeset.snapshot();
return this.changeset
.cast(Object.keys(this.get('schema')))
.validate()
.then(() => {
if (this.changeset.get('isValid')) {
return this.changeset
.save()
.then((result) => {
// Here, result.get('url') is undefined.
})
}
})
}
});