陷入承诺待遇

时间:2018-02-22 14:30:11

标签: node.js mongodb mongoose

使用NodeJS和Mongoose我正在尝试创建一个数据库文件,允许我查询数据库并返回结果,以便能够使用而不使用Mongoose。

在我的数据库文件中,我有这个

db.js

module.exports = {

  getUser: function (name) {
    var u = User.findOne({username: name}).exec().then(function(user) {
      console.log(user);
      return user;
    });
    return u;
  }

};

并在我的另一个文件中调用它

var db = require('./db')

var user_info = db.getUser("tom");
console.log(user_info);

当调用getUser函数时,它会使用以下代码行正确打印我在db.js文件中查找的信息。

console.log(user);

但是我似乎无法找到一种方法让数据库将值返回到user_info,我只是得到

Promise { <pending> }

我已经研究过.then和回调但似乎无法弄清楚如何让它发挥作用我总是在无休止的Promise循环中结束。

由于

3 个答案:

答案 0 :(得分:1)

var db = require('./db')

var user_info = db.getUser("tom");
console.log(user_info);

user_info.then(user => {
    const username = user.username;
    console.log(username);
});

承诺执行。但是,您可以在.then之后访问结果。

答案 1 :(得分:0)

您必须在承诺上致电.then以获取结果:

点击这里 Promise pending

答案 2 :(得分:0)

您需要为getUser调用$('#filterPageSearchModel_CarMakeFilter').on('change', function () { if ($('#check_id').val()) { // if checkbox is checked, run the bottom code var make = $(this).val(); ... } });

.then