2015-09-04 115 views
0

我使用流星包tomi:upload-jquery使用光纖外的回調。在一次回調中,我應該使用MongoDB,MongoDB需要在光纖中運行。流星,訪問光纖外的MongoDB

經過很多未來的嘗試,光纖,deasync,Meteor.bindEnvironment,Meteor.wrapAsync,a.s.o.我找不到解決辦法。

回調被wrappen是:

Meteor.startup -> 
    UploadServer.init 
    getDirectory: (fileInfo, formData) -> 
     # begin some sort of wrapping 
     dir = '' 
     u = Meteor.users.findOne({"uploadToken.token": formData.uploadToken }) 
     if u 
      dir = u.username 
     else 
      throw new Error 'Anonymous calls not permitted' 
     # end some sort of wrapping 
     console.log 'dir', dir 
     return dir 
    return 

編輯1

此代碼工作沒有崩潰,但它應該成爲同步:

Meteor.startup -> 
    UploadServer.init 
    getDirectory: (fileInfo, formData) -> 
     getDir = (formData,callback) -> 
     Fiber(()-> 
      console.log '0:',formData 
      dir = '' 
      u = Meteor.users.findOne({"uploadToken.token": formData.uploadToken }) 
      if u 
      dir = u.username 
      else 
      callback new Error('Anonymous file upload not permitted.'), null 
      console.log '1:',dir 
      callback null,dir 
     ).run() 
     dir = getDir(formData, (e,r)-> 
     console.log 'e,r:',e,r 
    ) 
     console.log '2:',dir 
     return '' 
    return 

在日誌中我獲得:

I20150905-08:33:13.171(2)? 0: { uploadToken: 'K2eEiFMRMagSuoKqf' } 
I20150905-08:33:13.173(2)? 2: undefined 
I20150905-08:33:13.174(2)? 0: { uploadToken: 'K2eEiFMRMagSuoKqf' } 
I20150905-08:33:13.175(2)? 2: undefined 
I20150905-08:33:13.177(2)? 1: test 
I20150905-08:33:13.177(2)? e,r: null test 
I20150905-08:33:13.177(2)? 1: test 
I20150905-08:33:13.178(2)? e,r: null test 

getDirectory被調用兩次。

現在缺少的是如何使代碼同步。那就是讓return dir等待getDir

任何意見和建議將不勝感激。

回答

0

查看此問題的解答:Meteor Package for formidable

要在光纖內執行MongeDB命令,請在包tomi:upload-server中包裝事件處理程序。