【问题标题】:TypeError: res.status is not a function expess appTypeError: res.status is not a function expess app
【发布时间】:2020-05-07 02:10:33
【问题描述】:

我正在尝试创建一个生成折扣券的函数,我收到一个错误,因为“TypeError:res.status 不是控制器上的函数。”

这是我的折扣控制器:

function coupongenerator ()  {
   var coupon = '';
   var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
   for (var i = 0; i < 10; i++) {
      coupon += possible.charAt(Math.floor(Math.random() * possible.length));
   }
   return coupon;
}
exports.createCoupon = () => {
    let isExistDiscount = false;
    do {
       let myDiscountCode = coupongenerator()
       let newDiscountCode = new Coupon({
          code: myDiscountCode,
          isPercent: true,
          amount:30 ,
          expireDate: '',
          isActive: true
       });
       newDiscountCode.save(function (err,res) {
          if (err) {
             if (err.name === 'MongoError' && err.code === 11000) {
                // Duplicate code detected
                isExistDiscount = true;
             }
          }
          res.status(200).send('yes');
       });
   } while (isExistDiscount);
}

【问题讨论】:

  • reqres是从express传递给你的函数调用的变量,所以你需要在createCoupon = () =&gt; {}传递(req, res)来获取请求和结果对象。
  • 非常感谢,我把它改成 createcoupon=(req,res)=>{} 就可以了

标签: node.js rest express


【解决方案1】:

您尝试访问的“res”对象实际上是在回调函数中保存 Mongo 文档后的响应。 res.status 与 express 中的 HTTP res 对象一起使用,该对象通常是控制器的函数参数。只需检查您的控制器变量标识符和回调标识符是否相同,这将隐藏控制器变量。因此 res 的范围是回调参数中的 res ,其中没有称为 status 的函数。如果这是原因,请更改其中一个标识符名称。

【讨论】:

    猜你喜欢
    • 2021-03-14
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    相关资源
    最近更新 更多