Nodejs未正确返回承诺

时间:2017-09-06 16:09:53

标签: node.js express mongoose

我正在开发NodeJS + Express + Mongoose + MongoDB项目。

此代码可以正常工作:

var findRecord = function(id) {
  // find record by id
  return User.findOne({
    _id: id
  }).then(function(record) {
      // if record not found
      if (!record) {
        return Promise.reject(constant.NOT_FOUND);
      } else {
        // return found object
        return Promise.resolve({
            data: record,
            status: constant.READ_SUCCESS
        });
      }
    }, function() {
        // if there is error reading record
        return Promise.reject(constant.READ_ERROR);
    });
};

不知道这个有什么问题:

var allRecords = function(skip, limit) {
  // find all records
  return User.find({}).limit(limit).skip(skip)
    .then(function(records) {
        console.log('executed');
        // if records found
        return Promise.resolve({
            data: records,
            status: constant.READ_SUCCESS,
        });
    }, function() {
        return Promise.reject(constant.READ_ERROR);
    });
};

执行永远不会在控制台上打印

即便是这个人也不能工作:

var allRecords = function(skip, limit) {
  // find all records
  return User.find({}).limit(limit).skip(skip)
    .exec(function(records) {
        console.log('executed');
        // if records found
        return Promise.resolve({
            data: records,
            status: constant.READ_SUCCESS,
        });
    }, function() {
        return Promise.reject(constant.READ_ERROR);
    });
};

1 个答案:

答案 0 :(得分:1)

您需要运行stringSize方法:

exec

除此之外,你不应该使用User.find({}).limit(limit).skip(skip).exec(); 返回promise的结果,只返回一个对象。此外,最好使用Promise.resolve回调,而不是catch的第二次回调:

then