2017-12-27 3 views
0

node + express 라우팅에 문제가 있습니다. 기본적으로 IDE 웹 스톰에 라우팅 스키마가 있습니다. 이 오류가 발생하기 때문에 모든 것을 잘 구성했는지 확신 할 수 없습니다.User.findByID가 함수가 아닙니다.

우편 배달부에서 올바른 결과를 얻으면 GET/users 및 POST/users를 올바르게 수행 할 수 있습니다.

노선//

const express = require('express'); 
const router = express.Router(); 
const _ = require('lodash'); 
const {ObjectID} = require('mongodb'); 

const {mongoose} = require('../db/mongoose') 
const {User} = require('../db/models/users') 
const {Project} = require('../db/models/projects') 
const {Dialog} = require('../db/models/dialogs') 

(...) 

router.get('/users/:userid', (req, res) => { 
    var id = req.params.userid.toString(); 

    if (!ObjectID.isValid(id)) { 
     return res.status(404).send(); 
    } 

    User.findByID(id).then((user) => { 
     if (!user) { 
      return res.status(404).send(); 
     } 

     res.send({user}); 
    }).catch(() => { 
     res.status(404).send(); 
    }); 
}); 

모델을 users.js

const mongoose = require('mongoose'); 
const Schema = mongoose.Schema 

// todo refactor userschema with proper validators (view udemy course) 

const UserSchema = new Schema({ 
    email: {type: String, required: true}, 
    password: {type: String, required: true}, 
    name: {type: String}, 
    company: {type: String}, 
    phone: {type: String}, 
    projects: [{type: Schema.Types.ObjectId, ref: 'Project'}] 
}); 


const User = mongoose.model('User', UserSchema); 

module.exports = {User} 
+3

JavaScript는 대소 문자를 구별합니다 (https://docstore.mik.ua/orelly/webprog/jscript/ch02_02.htm). 'findById' (마지막 문자 강조)를 시도하십시오. – Mikey

+1

'req.params.userid.toString();'이 줄은 또한 문제를 일으키고,'userid'에서 소문자 i를 적어 둡니다. –

답변

3

마이키가 맞다 users.js. 몽구스 모델 함수는 findById()가 아닙니다. findByID() - http://mongoosejs.com/docs/api.html#model_Model.findById

+0

정말 고마워요. 나는 이걸로 정말 어리 석다. 사실, webstorms ide는 findByID를 사용하여 제안합니다. https://pasteboard.co/H0jrCRO.png – jmrueda

관련 문제