2017-07-30 3 views
1

こんにちは皆私は別のモジュールにエクスプレスレスポンスオブジェクトを渡そうとしています。だから私のserver.jsファイルに私はだから私はrooms_controllerモジュールにresオブジェクトを渡すためにしようとしています。この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) 
}) 

を持っています。今私の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エラーを取得しています。誰もがこれで私を助けてもらえますか?あなたは、この行に

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

それを再定義するために大幅に

答えて

3

あなたが正しくそれをやっているが、RESを上書きしていることをお願い申し上げますので、解像度の実際のレスポンスオブジェクトであるnewRoomからRoom.findOneの代わりに、引数からの応答であります。それらの変数には異なる変数名を使用します。

+0

'room'は' findOne'からの応答です。コールバックが実際には3番目の引数を渡すとは思われません。 – robertklep

+1

私はどのような関数がもっともらしいかわかりませんが、@robertklepが記述しているので、コールバックの3番目の引数を完全に削除できます。 – Froast

+0

ありがとう。 :) – Shadid

関連する問題