2017-03-16 8 views
0

NodeJSとExpressを使用してGETとPOSTの値をデータベース(MongoDB)に作成しました。私は私のデータベースに保存されているユーザーの合計リストを取得することができる午前平均スタックアプリケーション - ユーザ名で問い合わせる単一ユーザの詳細を取得

(localhostを:3000 /ユーザー)私はユーザーIDまたはユーザー名を入力することのいずれかによって、単一のユーザーの詳細情報を取得したい

しかし、(ローカルホスト:3000 /ユーザー/:名)(localhostを:3000 /ユーザー/:ユーザーID)

私はオブジェクトID(ローカルホストを通じて単一のユーザーの詳細情報を取得することができています:3000 /ユーザー/:ID)

App.js

var express = require('express'); 
    var path = require('path'); 
    var favicon = require('serve-favicon'); 
    var logger = require('morgan'); 
    var cookieParser = require('cookie-parser'); 
    var bodyParser = require('body-parser'); 

    //var routes = require('./routes/index'); 
    //var users = require('./routes/users'); 

    //Router for developers 
    var developer = require('./routes/developer'); 

    //Router for TvShows 
    var tvshow = require('./routes/tvshow'); 

    //Router for TvShows 
    var user = require('./routes/user'); 

    //Router for TvShowRating 
    var tvshowrating = require('./routes/tvshowrating'); 

    //Router for TvShowEpisodes 
    var tvshowepisodes = require('./routes/tvshowepisodes'); 

    //Router for TvShowNewsFeed 
    var tvshownewsfeed = require('./routes/tvshownewsfeed'); 

    //Router for TvShowSeason 
    var tvshowseason = require('./routes/tvshowseason'); 

    //Router for TvShowRatingUser 
    var tvshowratinguser = require('./routes/tvshowratinguser'); 


    // load mongoose package 
    var mongoose = require('mongoose'); 

    // Use native Node promises 
    mongoose.Promise = global.Promise; 

    // connect to MongoDB 

    //mongoose.connect('<string>') 
    //mongoose.connect('mongodb://localhost/televisionary-api') 
     .then(() => console.log('connection succesful')) 
     .catch((err) => console.error(err)); 

    var app = express(); 

    // view engine setup 
    app.set('views', path.join(__dirname, 'views')); 
    app.set('view engine', 'ejs'); 

    // uncomment after placing your favicon in /public 
    //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
    app.use(logger('dev')); 
    app.use(bodyParser.json()); 
    app.use(bodyParser.urlencoded({ extended: false })); 
    app.use(cookieParser()); 
    app.use(express.static(path.join(__dirname, 'public'))); 

    //Registering routers 
    app.use('/developer', developer); 
    app.use('/tvshow', tvshow); 
    app.use('/user', user); 
    app.use('/tvshowrating', tvshowrating) 
    app.use('/tvshowepisodes', tvshowepisodes) 
    app.use('/tvshownewsfeed', tvshownewsfeed) 
    app.use('/tvshowseason', tvshowseason) 
    app.use('/tvshowratinguser', tvshowratinguser) 

    // catch 404 and forward to error handler 
    app.use(function(req, res, next) { 
     var err = new Error('Not Found'); 
     err.status = 404; 
     next(err); 
    }); 

    // error handlers 

    // development error handler 
    // will print stacktrace 
    if (app.get('env') === 'development') { 
     app.use(function(err, req, res, next) { 
     res.status(err.status || 500); 
     res.render('error', { 
      message: err.message, 
      error: err 
     }); 
     }); 
    } 

    // production error handler 
    // no stacktraces leaked to user 
    app.use(function(err, req, res, next) { 
     res.status(err.status || 500); 
     res.render('error', { 
     message: err.message, 
     error: {} 
     }); 
    }); 


    module.exports = app; 

。 routes/User.js

var express = require('express'); 
    var router = express.Router(); 

    var User = require('../models/User.js'); 

    /* GET /user listing. */ 
    router.get('/', function(req, res, next) { 
     User.find(function (err, user) { 
     if (err) return next(err); 
     res.json(user); 
     }); 
    }); 

    /* POST /user */ 
    router.post('/', function(req, res, next) { 
     User.create(req.body, function (err, post) { 
     if (err) return next(err); 
     res.json(post); 
     }); 
    }); 

    /* GET /user/id */ 
    router.get('/:id', function(req, res, next) { 
     User.findById(req.params.id, function (err, post) { 
     if (err) return next(err); 
     res.json(post); 
     }); 
    }); 

    /* PUT /user/:id */ 
    router.put('/:id', function(req, res, next) { 
     User.findByIdAndUpdate(req.params.id, req.body, function (err, post) { 
     if (err) return next(err); 
     res.json(post); 
     }); 
    }); 

    /* DELETE /user/:id */ 
    router.delete('/:id', function(req, res, next) { 
     User.findByIdAndRemove(req.params.id, req.body, function (err, post) { 
     if (err) return next(err); 
     res.json(post); 
     }); 
    }); 

    module.exports = router; 

models/User.js

var mongoose = require('mongoose'); 

    var userSchema = new mongoose.Schema({ 
     userId:Number, 
     userName: String, 
     userEmail: String, 
     userPassword: String, 
     userCreatedDateTime: Date, 
     userWatchList: [ 
      { 
       watchListItemId:Number, 
       tvShowId: Number, 
       tvShowSeasonId: Number, 
       tvShowEpisodeId: Number, 
       tvShowAddedDateTime: Date 
      } 
     ], 
     userFavouriteList: [ 
      { 
       favouriteId:Number, 
       tvShowId: Number, 
       tvShowFavouritedDateTime: Date 

      } 
     ], 
     userRatings: [ 
      { 
       tvShowUserRatingId:Number, 
       tvShowId: Number, 
       tvShowSeasonId: Number, 
       tvShowEpisodeId: Number, 
       tvShowRatedDateTime: Date, 
       tvShowRating: Number, 
       tvShowUserTags:[String] 

      } 
     ] 
    }); 

    module.exports = mongoose.model('User', userSchema); 

答えて

1

使用すると、1つのサービスでユーザ名またはユーザIDを入力することにより、ユーザの詳細を取得したい場合は、これであなたのサービスを変更するには:

router.get('/:keyword', function(req, res, next){ 
    User.findOne({$or:[{userName: req.params.keyword}{userId:req.params.keyword}]}, 
     function (err, post) { 
        if (err) return next(err); 
        res.json(post); 
        }); 
       }); 
0

findOneメソッドを使用すると、特定のユーザーをデータベースから取得できます。

router.get('/user/:username', function(req, res, next) { 
    User.findOne({userName: req.params.username}, function(err, user) { 
     if(err) 
      console.log(err); 
     else 
      //do something with user 
    }) 
}); 

userIdを使用しているユーザーをフェッチするのと同じです。

関連する問題