如何将express.js响应对象传递给另一个模块

大家好,我正在尝试将一个快速响应对象传递给我有一个不同的模块。 所以在我的server.js文件中,我有这个

 const room = require('../controller/rooms_controller') app.post('/rooms', function(req, res){ var name = req.body.roomname var loc = req.body.loc room.newRoom(name, loc, res) }) 

所以我试图将res对象传递给rooms_controller模块。 现在我的房间控制器模块看起来像这样

 const Room = require('../models/room') exports.newRoom = function(name, loc, res){ Room.findOne({'location': loc}, function(err, room, res){ if(err){ res.send({err: err}) } if(room){ res.send({room: room}) }else{ var newRoom = new Room() newRoom.location = loc newRoom.name = name newRoom.save(function(error){ if(err){ res.send({ error: error }) } res.send({room: newRoom}) }) } }) } 

所以在我的数据库logging正在创build,但我得到了cannot read property send of undefined错误在我的terminal。 任何人都可以请帮我这个。 将非常感激

你正在做的正确,但覆盖水库,因为你重新定义在这一行

 Room.findOne({'location': loc}, function(err, room, res){ 

所以res是来自Room.findOne的响应,而不是Room.findOne的参数,它是你实际的响应对象。 为其中一个使用不同的variables名称。