0

Après avoir cliqué sur le téléchargement d'un bouton d'image sur mon application, ce (événement) code est déclenché:Pourquoi ma collection FS ne parvient-elle pas à insérer des images et à ne PAS afficher de messages d'erreur?

/myApp
../client/main.js

import '../imports/api/tasks.js'; 
Meteor.subscribe('Images'); 

FS.Utility.eachFile(event, function(file) { 
var teste = Images.insert(file, function (err, fileObj) { 

var insertedIdSession = teste._id; 

    console.log("Total number of images in Images Collection is: " + Images.find().count()); 
    console.log("Inserted _ID is: " + insertedIdSession); 
    console.log("Latest image is:" + Images.find(insertedIdSession)); 
    }, 

function(error, result) { 
if (error) console.log (error); //info about what went wrong 
if (result) console.log (result); //the _id of new object if successful 
}); 

Le dessous est le résultat (image) dans la console du navigateur: The response in the browser console

l'image indique qu'aucune image a été insérée du tout. Pour confirmer cela, je cours aussi: Images.find().fetch() dans le navigateur qui a confirmé que rien n'a été inséré.
En outre, ce qui est étrange, c'est que les gestionnaires d'erreur ne montrent aucune indication d'erreur ou de résultat. .... Attendez que ce soit encore plus étrange, le lien au bas de l'image pointe effectivement vers l'image téléchargée. Je n'arrive pas à comprendre où je vais mal. Merci de m'aider ici.

Voici mes paramètres:

/myApp
../imports/api/tasks.js

import { Mongo } from "meteor/mongo"; 

Images = new FS.Collection("images", { 
stores: [new FS.Store.FileSystem("images", {path: "~/uploads"})] }); 

/myApp
../server/main.js

import '../imports/api/tasks.js'; 

Meteor.startup(() => { 

Meteor.publish('Images', function(){ 
return Images.find(); 
}); 

}); 

Répondre

0

Il ressemble à votre fonction de succès

Prend un paramètre "err", mais votre code ne le vérifie pas. Peut-être que cela a une idée du résultat
+0

Merci pour la réponse. J'ai basé mon codage sur la bibliothèque FS.Collection2 trouvée @ [https://github.com/CollectionFS/Meteor-CollectionFS]. B.T.W. le code fonctionnait parfaitement avant que je supprime autopublish avec 'meteor remove autopublish'. Est-ce que ce détail vous donne un indice? – SirBT

+0

Ok, c'est un factlet important :) Une aide importante lors du dépannage après l'avoir cassé, est de demander "qu'est-ce qui a changé?" Donc, cela signifie que quelque chose avec votre stratégie de publication est cassé - peut-être que vous n'autorisez pas l'insertion du client? – Mikkel

+0

Je ne suis pas sûr de ce que j'ai modifié dans le code (Désolé), mais il pense qu'il donnait à la fonction de publication le nom "publishImages", il ressemble maintenant à ceci: 'Meteor.publish ('Images', function publishImages() { \t return Images.find(); }); 'Quoiqu'il en soit, la fonction' Images.insert' fonctionne maintenant. Il ne reste plus que les problèmes d'affichage des images insérées dans la galerie. – SirBT

0

Il semble que ce changement de code subtile ait donné le résultat souhaité (ce qui signifie que les images insérées fonctionnent maintenant correctement), tout ce que j'ai fait, c'est donner un nom à la fonction de publication Meteor. À partir du code de publication à la recherche précédemment comme celui-ci (sans nom):

Meteor.publish('Images', function(){ 
return Images.find(); 
}); 

Pour le code de publication actuellement à la recherche comme ce

Meteor.publish('Images', function publishImages(){ 
return Images.find(); 
}); 

Merci les gars