猫鼬的承诺

时间:2015-04-20 13:34:28

标签: javascript express mongoose promise

任何人都可以解释为什么这样:

// this works
router.route('/videos')
  .get((req, res)=>{
    Video.find()
      .exec()
      .then(console.log);
  });

// this also works
router.route('/videos')
  .get((req, res)=>{
    Video.find()
      .exec()
      .then(videos=>{
        res.json(videos)
      });
  });

有效,而且:

router.route('/videos')
  .get((req, res)=>{
    Video.find()
      .exec()
      .then(res.json);
  });

没有按'?吨

res对象表示Express.js应用程序在收到HTTP请求时发送的HTTP响应。 console.log方法输出视频数据,而res.json似乎没有被调用。

1 个答案:

答案 0 :(得分:1)

期望将{p> res.json作为方法调用,resthis值。它适用于console.log,因为它已绑定到节点中的console对象。

您可以使用

.then(res.json.bind(res))

或继续使用该箭头功能。另请参阅How to access the correct `this` context inside a callback?