如何在同一个控制器文件中引用另一个put动作方法?

时间:2017-06-08 05:02:14

标签: javascript node.js express

我的项目涉及两个模型 - 用户和请求 - 用户可以创建食物递送请求并将令牌作为奖励附加,而另一个用户可以帮助递送和声明令牌。

在同一个controller.js文件中,我有一个方法 transferTokens (put action)和另一个 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'))

1 个答案:

答案 0 :(得分:0)

//请详细说明

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
      }
   })
}