【问题标题】:How to reference another put action method in the same controller file?如何在同一个控制器文件中引用另一个 put 操作方法?
【发布时间】:2017-06-08 20:09:48
【问题描述】:

我的项目涉及两个模型 - 用户和请求 - 用户可以创建送餐请求并附加代币作为奖励,而另一个用户可以帮助交付和领取代币。

在同一个 controller.js 文件中,我有一个方法 transferTokens(放置操作)和另一个 delete(删除操作)方法。我的问题是如何在 transferTokens 结束时调用 delete 方法?我将这两种方法分开,因为在某些情况下,用户可以删除自己的请求而无需任何令牌传输(即,在任何其他用户同意交付该请求之前)。

代码是:

let controller = {
  transferTokens: (req, res) => {
   // Request.findOne({ _id: req.params.id }) 
   // ...
   // User.findOneAndUpdate...
   // ... add tokens to user-helper
   // controller.delete();
  },
  delete: (req,res) => {
   // Request.findOneAndRemove
   // ...
   // res.redirect('/home');
  }
}
module.exports = controller

所以,这绝对是错误的。该请求确实被删除,但错误消息是 res 未定义。通常,用户单击视图中的删除按钮,但在这种情况下,用户助手单击“声明令牌”按钮,该按钮启动 transferTokens 放置操作。

编辑:我设法使用 app.set 找到了出路

app.set('res', res); controller.delete(req, app.get('res'))

【问题讨论】:

  • 您可以只创建函数delete,该函数将删除特定记录并在transferToken 以及delete 控制器函数中调用它
  • 我已经这样做了,但是删除函数不是通过通常的方式(从表单)获取 'req' 和 'res' 参数,而是被另一个控制器操作调用

标签: javascript node.js express


【解决方案1】:

//请详细说明

transferTokens :function(req,res){
   var model = req.allParams();

   Request
   .findOne({ _id: req.params.id })
   .exec(function(err,request){
      if(err) err

      if(request){

        //in this you should match any condition with your another table
        // so supose we have User table
        var userFilter ={
         id :request.id(as ur key)
        }

        User
        .findOne(userFilter)
        .exec(function(err,user){
           if(err) return err

           if(user){
             user.destroy(function (err) {
                                if (err) return res.toJson(false, [], "Error.");

                                return res.toJson(true, user, "Sucess.");
                            });
           }
        })

      }
      else{
        return  empty
      }
   })
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多