Node.js User.findByID不是一个函数

Node.js User.findByID不是一个函数,node.js,express,mongoose,Node.js,Express,Mongoose,我对node+express路由有问题。我在IDEWebStorms中默认提供了一个路由模式。我不确定我是否配置好了所有东西,因为我有这个错误 我可以在postman上使用正确的结果正确地执行GET/users和POST/users routes/users.js const express = require('express'); const router = express.Router(); const _ = require('lodash'); const {ObjectID} =

我对node+express路由有问题。我在IDEWebStorms中默认提供了一个路由模式。我不确定我是否配置好了所有东西,因为我有这个错误

我可以在postman上使用正确的结果正确地执行GET/users和POST/users

routes/users.js

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();
    });
});
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}
models/users.js

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();
    });
});
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}

迈克是对的。Mongoose模型函数是findById()而不是findById()-

Mikey是对的。Mongoose模型函数是findById()而不是findById()-

JavaScript是。尝试
findById
(强调最后一个字符)。
req.params.userid.toString()
这一行也可能导致问题,请注意
userid
JavaScript中的小写i是。尝试
findById
(强调最后一个字符)。
req.params.userid.toString()
这一行也可能会导致问题,请注意
userid
中的小写i,非常感谢,它很有效。我觉得这样做很愚蠢。事实上,WebStormIDE建议使用findByID:非常感谢,它成功了。我觉得这样做很愚蠢。实际上,WebStorm ide建议使用findByID: