2017-05-07 64 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