javascript - Node js,使用带有 Q Promise 的 mongoose 不会调用拒绝函数

标签 javascript node.js mongoose

我已经开始学习 Promise,我想将它与 mongoose 一起使用。我读到 Mongoose promise 是原始的,所以我使用以下代码应用于 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 行的函数,即使如果我有意查询不存在的数据

我是否遗漏了一些东西,或者 Mongoose 将始终使用Model.method().exec().then(resolveFunction)

最佳答案

没有找到某些东西并不是错误,它只是意味着您没有找到某些东西。请参阅:What is returned from Mongoose query that finds no matches?您的问题可能与此 Mongoose JS findOne always returns null 有关

也可以尝试这个:注意我没有使用过 q.Promise,我使用的是 bluebird。

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

关于javascript - Node js,使用带有 Q Promise 的 mongoose 不会调用拒绝函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35101226/

相关文章:

javascript - 动态添加位置 :fixed element is in the wrong place

node.js - 有没有办法在客户端计算机中永久缓存文件?

node.js - 如何获取 Node.js 导入的类型

javascript - puppeteer 师卡在弹出窗口上

mongodb - 比较在 Mongodb 中存储为字符串的整数

Javascript 函数不会使用 Cookie 执行

php - JavaScript 和 PHP 的文本压缩

javascript - 没有在 html/php 中单击按钮,文本框不接受符号和大写字母?

node.js - 使用 Mongoose 自定义连接

node.js - 引用 Mongoose 模式的类型错误