0

После нажатия на кнопку загрузить изображение на мое приложение, этот код (событие) срабатывает:Почему мой FS.collection не вставляет изображения и НЕ показывает никаких сообщений об ошибках?

/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 
}); 

Ниже результат (изображение) в консоли браузера: The response in the browser console

изображение указывает на то, что изображение не было вставлена ​​ вообще. Чтобы подтвердить это, я также запускаю: Images.find().fetch() в браузере, который подтвердил, что ничего не было вставлено.
Кроме того, странно, что обработчики ошибок не показывают никаких признаков ошибки и результата. .... Подождите, пока он станет еще более странным, ссылка внизу изображения на самом деле успешно указывает на загруженное изображение. Я не могу понять, где я ошибаюсь. Пожалуйста, помогите мне здесь.

Ниже приведены мои настройки:

/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(); 
}); 

}); 

ответ

0

Похоже, что ваша функция успеха

var teste = Images.insert(file, function (err, fileObj) { 

Принимает параметр «err», но ваш код не проверяет его. Может быть, это имеет ключ к исходу

+0

Спасибо за ответ. Я основал свою кодировку в библиотеке FS.Collection2, найденной @ [https://github.com/CollectionFS/Meteor-CollectionFS]. B.T.W. код работал отлично, прежде чем я удалил autopublish с 'meteor remove autopublish'. Означает ли эта деталь подсказку? – SirBT

+0

Хорошо, это важный факт. Основная помощь при устранении проблемы после взлома - спросить «что изменилось?». Таким образом, это означает, что что-то с вашей стратегией публикации нарушено - возможно, вы не разрешаете вставку с клиента? – Mikkel

+0

Я не уверен, что я изменил в коде (Извините), но он думает, что он дал функции публикации имя "publishImages", теперь он выглядит так: 'Meteor.publish ('Images', function publishImages() { \t return Images.find(); }); 'В любом случае функция' Images.insert' теперь работает, теперь просто возникают проблемы с отображением вставленных изображений в галерее. – SirBT

0

Похоже, что это тонкое изменение кода привело к желаемому результату (то есть вставка изображений теперь работает правильно), все, что я сделал, это дать функции публикации Meteor. Из издательского кодом ранее, глядя, как это (без имени):

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

к коду издательского в настоящее время ищет, как этот

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

Спасибо ребята

Смежные вопросы