мой проект включает в себя две модели - "Пользователь и запрос", где пользователь может создать запрос на доставку еды и прикреплять токены в качестве награды, в то время как другой пользователь может помочь доставить и потребовать токены.
В том же файле controller.js у меня есть метод transferTokens (put action) и другой метод delete (delete action). Мой вопрос: как я могу вызвать метод удаления в конце transferTokens? Я разделяю оба метода, так как бывают случаи, когда пользователь может удалять свои собственные запросы без какой-либо передачи токена (то есть до того, как любой другой пользователь согласится передать этот запрос).
Код:
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 undefined. Обычно пользователь нажимает кнопку "Удалить" в представлении, но в этом случае пользователь-помощник нажимает кнопку "Идентификаторы требований", которая инициирует действие transferTokens.
edit: Мне удалось найти выход с помощью app.set
app.set('res', res); controller.delete(req, app.get('res'))
//просьба уточнить более четко
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
}
})
}