承诺的状态正在等待,尽管它是当时的方法

时间:2016-09-25 17:24:56

标签: node.js es6-promise

我有承诺的问题。

mongoDb.getFromDb(req.body.firstName, req.body.lastName)
     .then(
           rows => {
                    console.log(rows.count()); // Promise { <pending> }
           }
      }

日志为:Promise { <pending> }

我读到了这个状态:

Pending - until a Promise is fulfilled it is in pending state

这就是为什么,我使用.then()方法。

正如我所读到的,.then()方法采用的函数将在Promise 完成后通过已解决的值

所以,如果它已经实现,为什么国家待定?

如果相关,则为getFromDb函数:

// Use connect method to connect to the Server
function init() {
  connectingDb = new Promise(
    function (resolve, reject) {
      MongoClient.connect(url, function (err, db) {
        if (err) {
          console.log('Unable to connect to the mongoDB server. Error:', err);
          reject(err);
        }
        else {
          console.log('Connection established to', url);

          resolve(db);
        }
      });

    }
  );
}

更新#1(torazaburo的评论):

function getFromDb(firstName, lastName) {

    return connectingDb
                       .then(myDb => {
                                      return myDb.collection('alon').find({
                                        "firstName": firstName,
                                        "lastName": lastName
                                      })
                       })
                       .catch(err=> { return err; })
}

(我仍然得到Promise { <pending> }

更新#2(noisypixy的评论):

var mongodb = require('mongodb'); var MongoClient = mongodb.MongoClient;

感谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

function getFromDb(firstName,lastName){

@angular