Javascript 节点js,使用mongoose和Q promise不调用拒绝函数

Javascript 节点js,使用mongoose和Q promise不调用拒绝函数,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,我已经开始学习承诺,我想用它来对付猫鼬。我已经读到猫鼬的承诺是原始的,因此我使用以下代码应用于q: var mongoose = require('mongoose'); var q = require('q'); mongoose.Promise = q.Promise; 我已经创建了模式和模型,并尝试通过承诺调用函数: User.findOne({chat_id: 2}).exec().then( function (obj) { console.log("SUCC

我已经开始学习承诺,我想用它来对付猫鼬。我已经读到猫鼬的承诺是原始的,因此我使用以下代码应用于
q

var mongoose = require('mongoose');
var q = require('q');
mongoose.Promise = q.Promise;
我已经创建了模式和模型,并尝试通过承诺调用函数:

User.findOne({chat_id: 2}).exec().then(
    function (obj) {
        console.log("SUCCESS");
        console.log(obj);
    },
    function (err) {
        console.log("ERROR");
        console.log(err);
    }

).done();
当我调用此代码时,它总是调用
resolve
part并跳过
reject
part。如果我有意查询不存在的数据,我的控制台始终显示具有
成功
行的功能


是我遗漏了什么,还是mongoose总是使用
Model.method().exec()。然后(resolveFunction)

找不到东西不是错误,只是意味着找不到东西。请看:您的问题可能与此有关

也可以试试这个:注意我没有和q一起工作过。答应我,我用的是蓝鸟

  User.findOne({chat_id: 2}).exec().then(
    function (obj) {
      if (obj.chart_id === 2) {
        console.log("SUCCESS");
        console.log(obj);
      } else {
        console.log("obj with obj.chart_id == 2 NOT FOUND");
        console.log(obj);
      }

    },
    function (err) {
      console.log("ERROR");
      console.log(err);
    }

  ).done();

找不到东西不是错误,它只是意味着你没有找到东西。请看:您的问题可能与此有关

也可以试试这个:注意我没有和q一起工作过。答应我,我用的是蓝鸟

  User.findOne({chat_id: 2}).exec().then(
    function (obj) {
      if (obj.chart_id === 2) {
        console.log("SUCCESS");
        console.log(obj);
      } else {
        console.log("obj with obj.chart_id == 2 NOT FOUND");
        console.log(obj);
      }

    },
    function (err) {
      console.log("ERROR");
      console.log(err);
    }

  ).done();