2016-09-08 5 views
-1

私はnodejs/express/mongodbを使って安らかなAPIを構築しています。 SMS検証を実装しようとしているので、ユーザーはsms経由でコードを受信して​​アカウントを確認できます。NodeJs快適なAPIがパラメータIDを返さない

このルートURLからreq.params.idを返すのに問題があります。

http://localhost:3000/api/account/123/sms/ 

経路

app.use('/api/account', require('./app/routes/account.route')); 
app.use('/api/account/:id/sms', require('./app/routes/sms.route')); 

account.route

'use strict'; 

var express = require('express'); 
var router  = express.Router(); 
var controller = require('../controllers/account.controller'); 
controller  = new controller(); 

router.get('/', controller.index.bind(controller)); 
router.get('/:id', controller.show.bind(controller)); 
router.post('/', controller.store.bind(controller)); 
router.put('/:id', controller.update.bind(controller)); 
router.delete('/:id', controller.destroy.bind(controller)); 

module.exports = router; 

sms.route

'use strict'; 

var express = require('express'); 
var router  = express.Router(); 
var controller = require('../controllers/sms.controller'); 
controller  = new controller(); 

router.post('/', controller.store); 

module.exports = router; 

sms.controller

'use strict'; 

var User = require('../models/user.model'); 
var Token = require('../models/token.model'); 
var config = require('../../config/app'); 
var SMS = require('../../modules/sms'); 

class SmsController { 

    store(req, res) { 

     return res.json(req.params.id); 

    } 
} 

module.exports = SmsController; 

私はそのエンドポイント(URL)を試して打つために郵便配達員を使います。私は123アカウントidを返すことを期待していますが、何も返さない/空白/空白です。

+1

郵便配達?置く?取得する?私はGET '/ api/account /:id/sms'を扱うルートを見ません。 –

+0

[' mergeParams'](http://expressjs.com/en/4x/api.html#express.router) 。 – robertklep

+0

@Kevin Bええ、それはルートパラメータ付きの投稿要求です。あなたは私のsms.routeでルートを見ることができます – KayTokyo

答えて

0

のparamsをマージについてのコメントを@robertkleptをお願い致します、私はあなたを知っているdidintはこの前、私は基本的に私は巣に自分の口座ルータ内部の私のSMSルーターを必要と

のparams急行マージを検索した後、それを解決するために管理できます。次に、smsルータを定義するときにmergeparamsのオプションの値を設定します。ポスト要求に

経路

module.exports = function(app){ 

    app.use('/api/account', require('./app/routes/account.route')); 

}; 

account.route

'use strict'; 

var express = require('express'); 
var router  = express.Router(); 
var controller = require('../controllers/account.controller'); 
controller  = new controller(); 

router.get('/', controller.index.bind(controller)); 
router.get('/:id', controller.show.bind(controller)); 
router.post('/', controller.store.bind(controller)); 
router.put('/:id', controller.update.bind(controller)); 
router.delete('/:id', controller.destroy.bind(controller)); 

router.use('/:id/sms', require('./sms.route')); 

module.exports = router; 

sms.route

'use strict'; 
var express = require('express'); 
var router  = express.Router({mergeParams: true}); 
var controller = require('../controllers/sms.controller'); 
controller  = new controller(); 

router.post('/', controller.store); 

module.exports = router; 
関連する問題