Mongoose promise中的代码永远不会执行



我目前正在控制器中将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试过这个.

你需要调用.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

最新更新