2016-01-11 3 views
3

У меня есть коллекция продуктов, и я хочу разрешить пользователям добавлять к ним несколько изображений.Meteor js: сохранение коллекции на клиенте

Уловка: я хочу, чтобы изображения загружались мгновенно, но поскольку продукт не сохранен, изображения не могут быть встроены или объединены с помощью внешнего ключа.

Возможно ли сохранить изображения клиентов, а затем после сохранения продукта. Я добавляю изображения в базу данных продукта?

Как это решить? Благодаря

var imageStore = new FS.Store.GridFS("images"); 

Images = new FS.Collection("images", { 
    stores: [ 
    new FS.Store.FileSystem("original") 
    ], 
    filter: {allow: {contentTypes: ['image/*']}} 
}); 
+0

почти год назад я боролся, как вы, чтобы FSCollection работал над моим приложением, поэтому я делаю [этот пример репо] (https://github.com/Ethaan/simple-uploadFS), надеюсь, что он сработает для вас – Ethaan

ответ

0

В Метеоре, изображения будут загружены «мгновенно» из-за парадигмы «Д.Б. везде», то есть они будут храниться оптимистически в MiniMongo стороны клиента БД, а затем отправляются на сервер. Если они отклоняются сервером, необходимо создать ошибку для причины отклонения (в журналах сервера).

Для примеров кода, как загружать файлы с помощью CollectionFS, посмотрите на these code samples at the CollectionFS wiki.

This one, например, кажется, что вы ищете:

Template.myForm.events({ 
    'change .myFileInput': function(event, template) { 
     FS.Utility.eachFile(event, function(file) { 
     Images.insert(file, function (err, fileObj) { 
     //If !err, we have inserted new doc with ID fileObj._id, and 
     //kicked off the data upload using HTTP 
     }); 
    }); 
    } 
}); 

После того как файлы были сохранены в клиенте БД, вы должны быть в состоянии отображать их мгновенно, например, с помощью this method ,

Если это не поможет, предоставьте ссылку на репо или более подробную информацию. проблема, например, любые возникающие ошибки, ошибки серверной стороны esp.

+0

Эй вы неправильно поняли Q. Я могу получить изображения для загрузки в порядке, и они будут отображаться мгновенно. Но проблема в том, что я хочу встроить коллекцию изображений внутри коллекции продуктов. Подобно ассоциации внешнего ключа в базах данных типа sql. Теперь это проблема, потому что, поскольку все изображения мгновенно загружаются, они будут загружены до того, как продукт будет сохранен в базе данных, чтобы изображения не знали, к кому они принадлежат. Я спрашивал, есть ли способ, которым я мог бы хранить коллекцию изображений в db minimongo client до тех пор, пока продукт не будет отправлен. Тогда я мог бы присоединиться к ним. –

+0

Ой, в этом случае, похоже, вы, возможно, ищете коллекционный крюк, где вы создаете ассоциацию перед вставкой. См. Https://atmospherejs.com/matb33/collection-hooks – andersr