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

时间:2017-07-30 15:16:24

标签: javascript node.js express

大家好我试图将快速响应对象传递给我拥有的其他模块。所以在我的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模块。现在我的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})
            })
        }
    })



}

因此,在我的数据库中,记录已经创建,但我的终端中出现cannot read property send of undefined错误。任何人都可以帮我这个。非常感激

1 个答案:

答案 0 :(得分:4)

你正确地做了但是覆盖res因为你在这一行重新定义它

class Cart : NSObject {
    var allProductsInCart = [MainProduct]()

    override init() {
        super.init()
    }

    class var sharedCart: Cart {
        struct Static {
            static let instance = Cart()

        }
        return Static.instance
    }
}

所以res是Room.findOne({'location': loc}, function(err, room, res){ 的响应,而不是Room.findOne的参数,它是你的实际响应对象。为其中一个使用不同的变量名称。