2017-05-07 39 views
0

我對NodeJS是一種新鮮感,我正在學習我的代碼,但我無法將我的頭圍繞Promise /然後。從那裏返回 - nodejs

這是一段代碼 - 我正在使用庫函數來讀取數據庫值。

var collection = 'Students'; 
var query = {}; 
query.name = 'name'; 

    //readFromDatabse returns -{Function} a promise to return the document found, or null if not found 
var temp = readFromDatabase(collection, query).then(function(studentData) { 
    var result = { 
     resultDetails: { 
      username: studentData.username, 
      password: studentData.password 
     } 
    }; 
    return callback(null,resultDetails); 

}); 

但是當我讀到看到溫度值,它包含{"isFulfilled":false,"isRejected":false}!我怎樣才能得到結果的詳細信息到臨時?

+0

不是問題,但'回報回調(NULL,resultDetails);'不會做你所期望的,因爲'resultDetails'是不明確的 - 也是,事實上,你在一個承諾使用回調錶明其他潛在的問題 - 我說潛在的,代碼可能會很好,這只是承諾通常用於代替回調範例 –

回答

0

您必須將Promises看作容器的值。 readFromDatabase返回這樣一個容器,它可能最終會保存請求的值,除非查詢失敗。您的temp變量指向容器,但不包含響應。屬性isFullfilledisRejected是Promise的屬性,告訴您它既沒有用值解析,也沒有被錯誤拒絕。

要獲得響應,您必須使用then方法。當查詢產生結果或錯誤時,您在那裏註冊的函數將被調用。

var collection = 'Students'; 
var query = {}; 
query.name = 'name'; 

var temp = null; 
readFromDatabase(collection, query).then(function(studentData) { 
    var result = { 
     resultDetails: { 
      username: studentData.username, 
      password: studentData.password 
     } 
    }; 
    temp = result; 
}); 

// temp is still null here 
+0

謝謝,我讀了一下!那麼讓我試試鏈接吧。 – xKir