【问题标题】:Why doesn't Mongoose call "callback"?为什么 Mongoose 不调用“回调”?
【发布时间】:2018-07-31 15:55:41
【问题描述】:

我有一个很奇怪的问题:

在我的“Message.js”文件中,我定义了一个架构:

const mongoose = require('mongoose');
const moment = require('moment');

const Schema = mongoose.Schema;

const MessageSchema = new Schema({
  content: {
    type: String,
    required: [true, 'Cannot Be Empty!']
  },
  type: {                                               
    type: Number,
    enum: [0, 1, 2, 3, 4]
  },
  target: { type: [], default: ['all'] },
  target_user: { type: [], default: ['all'] },
  ext: {},
  create_time: {
    type: Number,
    default: function () {
      return moment().unix();
    }
  }
});

const MessageModel = mongoose.model("MessageModel", MessageSchema);
module.exports = MessageModel;

然后我使用如下代码在另一个模型中引用了这个文件:

const MessageModel = require('../../common/model').MessageModel;

exports.messageList = function (req, res) {

.....

  MessageModel.find(queryParams).skip(offset)
    .limit(limit)
    .sort({ create_time: -1 })
    .exec(function (err, data) {
      if (err) {
        res.error(err);
      }
      else {
        res.success(data);
      }
    });
};

令我惊讶的是“exec”处的回调永远不会被调用,这意味着永远不会调用 res 来返回实际值。我试过“findOne”、“remove”....等等。除了在 Visual Studio Code 中找到之外,它们对我都很好……为什么?

谁能帮帮我?警戒!

【问题讨论】:

    标签: mongoose mongoose-schema


    【解决方案1】:

    你可以试试then()。这是更好的方法

    const MessageModel = require('../../common/model').MessageModel;
    
    exports.messageList = function (req, res) {
    MessageModel.find(queryParams).skip(offset)
     .limit(limit)
     .sort({ create_time: -1 })
     .then((data) => {
       if (data) {
         res.status(200).json(data);
       } 
       else {
         res.status(500).json({ message: 'Internal Server error'});
       }
     });
    };
    

    【讨论】:

    • 抱歉还是没用 :(
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 2015-03-09
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2015-06-15
    • 2018-01-03
    • 2020-08-12
    相关资源
    最近更新 更多