我目前正在控制器中将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