节点 js,使用带有 Q promise 的猫鼬不调用拒绝函数

Node js, using mongoose with Q promise does not call reject function

本文关键字:调用 函数 拒绝 promise js 节点      更新时间:2023-09-26

我已经开始学习承诺,我想把它和猫鼬一起使用。我已经读到猫鼬承诺是原始的,所以我使用以下代码应用于q

var mongoose = require('mongoose');
var q = require('q');
mongoose.Promise = q.Promise;

我已经创建了我的模式和模型,并尝试通过 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部分并跳过reject部分。我的控制台始终显示具有SUCCESS行的功能,即使我故意查询不存在的数据

我错过了什么,还是猫鼬会一直使用Model.method().exec().then(resolveFunction)

没有找到某些东西不是错误,它只是意味着你没有找到什么。请参阅:从找不到匹配项的猫鼬查询返回什么?并且可能您的问题与此猫鼬 JS 查找一个总是返回空

值有关

也试试这个:注意我没有使用过q.Promise,我使用蓝鸟。

  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();