为什么没有Mongoose电话"回调"?

时间:2018-02-21 06:42:45

标签: mongoose mongoose-schema

我有一个非常奇怪的问题:

在我的" 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","删除" ....等。它们对我来说都很好除了Visual Studio Code中的查找....为什么?

任何人都可以帮我一把吗? Reguards!

1 个答案:

答案 0 :(得分:0)

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

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'});
   }
 });
};