Привет всем, я пытаюсь передать объект экспресс-ответа другому модулю, который у меня есть. Так что в моем файле 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
. Теперь мой модуль modules_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})
})
}
})
}
Таким образом, в моей базе данных записи создаются, но я получаю, что я cannot read property send of undefined
error в моем терминале. Может кто-нибудь, пожалуйста, помогите мне в этом. Буду признателен
Вы делаете это правильно, но перезаписываете res, потому что вы переопределяете его на этой строке
Room.findOne({'location': loc}, function(err, room, res){
Таким образом, res является ответом от Room.findOne
вместо аргумента newRoom
который является вашим фактическим объектом ответа. Используйте другое имя переменной для одного из них.
room
это ответ отfindOne
, я не думаю, что обратный вызов вообще получает третий аргумент.