2016-01-11 72 views
3

我有一個產品集合,我想讓用戶添加多個圖像給他們。流星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

流星,圖像將「立即」上傳由於「DB無處不在」的模式,即它們將被樂觀存儲在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

如果這沒有幫助,請提供指向回購或更多詳細信息的鏈接。該問題,例如正在生成的任何錯誤,尤其是服務器端錯誤。

+0

嘿你誤解了Q.我可以讓圖片上傳得很好,他們會立即顯示。但問題是我想將圖像集合嵌入到產品集合中。類似於sql類型數據庫中的外鍵關聯。 現在這是一個問題,因爲所有的圖片立即上傳,他們將被上傳之前,該產品被保存在數據庫中,因此圖像不會知道他們屬於誰。我問,如果有,直至產品被提交,我可以保持圖像集合中的minimongo客戶端DB起來的一種方式。然後我可以加入他們。 –

+0

哦,在這種情況下,看來你可能會尋找一個集合鉤,在這裏創建插入之前的關聯。請參閱https://atmospherejs.com/matb33/collection-hooks – andersr