2016-10-11 3 views
-1

私はmongodbのコントローラにデータを持っています。このjsonオブジェクトをルータに送信したいので、以下のコードでapiを使ってクライアント側に送ることができます。エラーが発生しましたTypeError: Cannot read property 'json' of undefined何が間違って実装されていますか?jsonオブジェクトをコントローラからルータに渡すには?

controller.js

var Diagram = require('./diagram.model'); 
var mongoose = require('mongoose'); 

module.exports = function index(req,res) { 
     Diagram.find({}, function(err, result) { 
     if (!err) { 
      console.log('Response from controller', result); 
      return res.json(result); 
     } 
     }); 
    } 

router.js

var express = require('express'); 
var controller = require('./diagram.controller'); 
var router = express.Router(); 
console.log('THis is in router',controller.index); 
router.get('/getAllDiagram',controller.index); 
module.exports = router; 
+0

私は昨日私の答えに何が間違っていたのですか? :) http://stackoverflow.com/a/39966173/6945467 - それにもかかわらず、あなたはあなたの 'modules.exports'にエラーがあります。これは 'module.exports.index = function index(req、res)'でなければなりません。さもなければ 'controller'に' index'関数はありません。 – notion

+0

私はまだ問題を解決することができなかったので、私たちはさらなる会話を避け、チャットにアクセスすることができないようにしたいので、新しいタグで新しい質問をしました。 – hussain

+0

'console.log( 'これはルータにあり、controller.indexにあります)'の出力は何ですか? –

答えて

2

私はmodule.exportsは(上記の私のコメントを参照してください)問題だと思います。 )::

const express = require('express'); 
const app = express(); 

app.get('/getAllDiagram', (req, res) => { 
    Diagram.find({}, function(err, result) { 
     if (err) { 
      console.error(`Error in finding diagram: ${err.message}`); 

      return res.status(500); 
     } 

     res.json(result); 
    }); 
}); 

app.listen(8080); 

高度なバージョン

controller.js

const Diagram = require('./diagram.model'); 

module.exports.index = (req, res) => { 
    Diagram.find({}, function(err, result) { 
     if (err) { 
      console.error(`Error in finding diagram: ${err.message}`); 

      return res.status(500); 
     } 

     res.json(result); 
    }); 
}; 
あなたは簡単まず((あなたが成功の感覚を持っているので、取り扱いリクエストを書くことについてどう思いますか

router.js

const express = require('express'); 

const controller = require('./controller'); 
const router = express.Router(); 

router.get('/getAllDiagram', controller.index); 

module.exports = router; 

app.js

const express = require('express'); 

const router = require('./router'); 

const app = express(); 

app.use(router); 

app.listen(8080); 

重要:module.exports.index宣言を確認してください。それはあなたのコードスニペットで間違っていた。

+0

私は試してみました。このアプローチでデータを取得できますが、コードが構造化されている方法に従わなければなりません。私はコントローラにデータをルータに渡す必要があります。 – hussain

+0

さて、私は自分のローカルマシンで試した「アドバンスドバージョン」を追加しました。これは魅力的なものです(モデル処理はもちろんありません)。 – notion

+0

今回は何もエラーが表示されませんでしたが、ルータにデータがあるかどうかを確認する方法はありますか? – hussain

関連する問題