Mongoose承诺中的代码永远不会执行

时间:2018-03-30 22:01:44

标签: node.js express mongoose

我目前正在我的控制器中使用Mongoose和我的Express应用程序。到目前为止,我一直在导入模型,然后成功运行查询。现在,我正在设置一个cron文件(名为cron.js),并且有一个以相同方式导入它的文件,但是当我从package.json脚本运行文件时,承诺中的代码从不执行;没有回报价值。这是运行我的文件的脚本中的代码:

babel-node server/db/cron.js

我尝试了一些事情:

import User from '../models/user';

User.find({}, function(err, users)  {
      // these don't run:
      console.log(err);
      console.log(users);
    })

async function getUser() {
    // runs
    console.log('hi');
    let user = await User.findOne({ 'name' : 'ETH'})
    // doesn't run
    console.log(user);
}

getUser();

User.findOne({ name: 'bob' })
.exec((err, user) => {
  // doesn't run
  console.log('123')
}

当我console.log模型(User)和函数(User.find)成功导入时。我还试过findOne

1 个答案:

答案 0 :(得分:0)

您需要致电.exec()

let user = await User.findOne({ 'name' : 'ETH'}).exec()

findOne()返回Query,返回Promise,然后您调用.exec()

http://mongoosejs.com/docs/api.html#findone_findOne http://mongoosejs.com/docs/api.html#query_Query-exec