2017-07-30 140 views
1

大家好,我正嘗試將一個快速響應對象傳遞給我擁有的其他模塊。所以在我的server.js文件我有這個如何將express.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錯誤在我的終端。任何人都可以幫助我這個。將不勝感激,

回答

3

你做正確,而是因爲你重新定義這條線

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

所以資源正在覆蓋資源從Room.findOne代替參數newRoom響應這是您的實際響應對象。爲其中一個使用不同的變量名稱。

+0

'room'是'findOne'的迴應,我不認爲回調實際上通過了第三個參數。 – robertklep

+1

雖然我不知道這個函數是什麼,它最有可能是@robertklep描述的情況,這意味着你可以完全刪除回調函數的第三個參數。 – Froast

+0

非常感謝。 :) – Shadid

相關問題