2017-04-07 34 views
0

我在其中,我试图做简单的东西作为执行猫鼬查询,然后读取的承诺.then猫鼬的NodeJS功能将不执行承诺

问题是响应的node.js脚本不管我尝试什么,.then似乎都不会发生。我究竟做错了什么?

这里是我的节点文件代码:

const WorkOrder = require('../models/WorkOrder'); 

let promise = WorkOrder.findOne({}).exec(); 

promise.then(result => { 
    console.log('result', result); 
); 

当我做了console.log(WorkOrder.findOne({}).exec())我得到:

Promise { 
    emitter: 
    EventEmitter { 
    domain: null, 
    _events: {}, 
    _eventsCount: 0, 
    _maxListeners: undefined }, 
    emitted: {}, 
    ended: false } 

这是一个类似的功能在应用程序的其他部分使用(使用终极版)那还有更多的事情要做,这只是一个超级简化的版本,看看我是否可以查询我的数据库,然后看看结果。

这是怎么回事?

回答

1

exec不返回承诺,查询的确如此。

const WorkOrder = require('../models/WorkOrder'); 

let promise = WorkOrder.findOne({}); 

promise.then(result => { 
    console.log('result', result); 
}); 

promise.exec()执行查询并接收一个回调函数的参数:

const WorkOrder = require('../models/WorkOrder'); 

let promise = WorkOrder.findOne({}); 

promise.exec((err, result) => { 
    if(err) console.log("err", err); 
    else console.log("result", result); 
}); 
+0

呀,看到这对我来说很有意义,但是当我运行该脚本,我还是我没有得到任何控制台语句显示:/我刚刚得到'[nodemon]启动'节点check_work_orders.js' [nodemon]干净的退出 - 重新启动前等待更改 –

+0

如果您从未调用mongoose.connect() – Paul