Erreur Google Firebase (fonction renvoyée indéfinie, promesse ou valeur attendue)
Je développe un serveur avec Firebase.
J'avais copié la vidéo du développeur Google sur Youtube .
Cela fonctionne bien, mais sur log il y a une erreur:
Fonction renvoyée indéfini, promesse attendue ou valeur
Il dit la fonction retournée undefined
, mais je fais function
retourner un promise
`set "
Comment puis-je résoudre cela?
function sanitize(s) {
var sanitizedText = s;
console.log('sanitize params: ', sanitizedText);
sanitizedText = sanitizedText.replace(/bstupidb/ig, "wonderful");
return sanitizedText;
}
exports.sanitizePost = functions.database
.ref('/posts/{pushId}')
.onWrite(event => {
const post = event.data.val();
if (post.sanitized) return;
console.log('Sanitizing new post', event.params.pushId);
console.log(post);
post.sanitized = true;
post.title = sanitize(post.title);
post.body = sanitize(post.body);
return event.data.ref.set(post);
})
Je suis débutant de Firebase, Nodejs.
1 réponses
Comme Frank l'indique dans son commentaire sur votre post, la déclaration de retour qui produit l'avertissement est celle-ci:
if (post.sanitized) return;
L'avertissement peut être réduit au silence en retournant une valeur fictive (par exemple null, false, 0). La valeur n'est pas utilisée.
Les versions antérieures des fonctions Cloud ne se plaignaient pas lorsqu'une fonction s'est arrêtée à l'aide d'une instruction return sans valeur. Qui explique pourquoi vous voyez return;
dans la vidéo vous a lié et dans la documentation. Le commentaire sur la question par Firebaser Frank van Pufeelen, explique pourquoi le changement a été fait.
Le moyen le plus simple d'éliminer l'avertissement est d'ajouter une valeur de retour, comme Frank l'a suggéré:
if (post.sanitized) return 0;
Une autre option consiste à changer le déclencheur de onWrite()
à onCreate()
. Ensuite, la fonction ne sera pas appelée lorsque le post est aseptisé et que la vérification qui produit l'avertissement n'est pas nécessaire:
exports.sanitizePost = functions.database
.ref('/test/{pushId}')
.onCreate(event => { // <= changed from onWrite()
const post = event.data.val();
//if (post.sanitized) return; // <= no longer needed
console.log('Sanitizing new post', event.params.pushId);
console.log(post);
//post.sanitized = true; // <= not needed when trigger is onCreate()
post.title = sanitize(post.title);
post.body = sanitize(post.body);
return event.data.ref.set(post);
});