坚持承诺等待



使用nodejs和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> }

我已经调查了。

谢谢

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之后访问结果。

您必须在承诺捕获结果的承诺上致电.then

在这里检查承诺未决

您需要致电 .then for getuser。

// db.js
module.exports = {
    getUser: function (name) {
        return User.findOne({
            username: name
        }).exec();
    }
};

var db = require('./db');
db.getUser("tom").then((user) => {
    console.log(user);
}).catch((err) => {
    console.log(err);
});

最新更新