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
。
任何意見和建議將不勝感激。