我的项目涉及两个模型 - 用户和请求 - 用户可以创建食物递送请求并将令牌作为奖励附加,而另一个用户可以帮助递送和声明令牌。
在同一个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'))
答案 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
}
})
}