【问题标题】:Node js, using mongoose with Q promise does not call reject functionNode js,使用带有Q promise的mongoose不会调用reject函数
【发布时间】:2016-05-08 04:11:00
【问题描述】:

我已经开始学习 Promise,我想将它与 mongoose 一起使用。我读过猫鼬的承诺是原始的,所以我使用以下代码申请了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)

【问题讨论】:

    标签: javascript node.js mongoose


    【解决方案1】:

    没有找到东西不是错误,它只是意味着你没有找到东西。请参阅: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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 2017-06-14
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多