Javascript 捕获mongoose saveAsync错误

Javascript 捕获mongoose saveAsync错误,javascript,express,mongoose,promise,bluebird,Javascript,Express,Mongoose,Promise,Bluebird,我试图上传一个文件到一个静态文件夹,并使用mongoose将条目信息保存到mongodb。一种可能的情况是,只有一个任务可以工作,然后我需要恢复已完成的任务。设计的工作流程是先上传文件,上传后将数据保存到数据库。代码如下: Promise.promisifyAll(mongoose); /** * Upload file * @property {string} req.body.filename * @property {tar file}

我试图上传一个文件到一个静态文件夹,并使用mongoose将条目信息保存到mongodb。一种可能的情况是,只有一个任务可以工作,然后我需要恢复已完成的任务。设计的工作流程是先上传文件,上传后将数据保存到数据库。代码如下:



    Promise.promisifyAll(mongoose);

    /**
     * Upload file
     * @property {string} req.body.filename
     * @property {tar file} req.file
     */
    function _upload(req, res) {
      return new Promise((resolve, reject) => {
        multerMiddleware(req, res, err => {
          if (err) {
            reject(err);
          }

          resolve(req.body);
        });
      });
    }

    /**
     * Create new entry
     * @property {string} req.body.name
     * @returns {Entry}
     */
    function create(req, res, next) {
      let entry;

      _upload(req, res)
        .then(body => {
          entry = new Entry({
            name: body.name
          });

          debug(`start to saving entry`);
          return entry.saveAsync();
          });
        }).then(savedEntry => {
          debug(savedEntry);
          entry = savedEntry;
          res.json(savedEntry);
        }).catch(e => {
          // TODO: if save failed, remove file
          console.error(e);
          return next(e);
        });
    }

    const router = express.Router();  // eslint-disable-line new-cap

    router.route('/')
      /** POST /api/entries - create new entry */
      .post(create);

Curl命令:

curl -i  -F "name=w69325"  -F "file=@entry_file.tar"  http://localhost:3000/api/entrys
答复:

HTTP/1.1 100 Continue
// after a while
curl: (52) Empty reply from server
然而,当我在调用api之前停止mongo服务时,程序就挂起了。我的意图是测试错误处理,在这种情况下上载成功但保存失败。我的理解是,承诺链中发生的任何错误都应该被catch子句捕获。但那没有发生。。程序不知从哪里丢失了

我哪里出错了?感谢您的帮助