我正嘗試使用Monad來管通過我的數據,問題是我無法弄清楚如何讓我的Monad知道這是異步如何使Monads知道異步函數(承諾/未來)
這裏的工作是我
let processData = Either.either(_sendError, _sendResponse)
processData(_getDataGeneric(queryResult)
.chain(_findDevice)
.chain(_processRequest)
);
QueryResult中是我從數據庫本身獲取。
問題是取回結果只是在管道中間。 我要的是這個
ValidateUserInput -> GetDataFromDB -> ProcessData
processAll(_fetchFromDB(userId)
.getDataGeneric
.chain(_findDevice)
.chain(_processRequest))
//_fetchFromDB , Mongoose Query
function _fetchFromDB(userId){
return myModel.findOne({id:userId}).exec()
.then(function(result){
return Right(result)
}).catch((err)=>Left(err))
}
如果結果是有效的,從數據庫,它會返回一個正確的實例,如果有任何類型的錯誤,它會返回左
的問題是,這種操作是異步,我不知道如何讓我的Monad處理它並處理它。
關於如何讓我的Monad意識到Promise在操作中的任何想法?
在Model.findOne()行之前是否存在返回關鍵字? – Sgnl