Мне нужно иметь возможность получить все данные пользователей из API. Но я получаю следующую ошибку
Cannot GET /users
Что мне нужно исправить в моем коде?
ниже код из основного файла js
const express = require('express')
const app = express()
const mongoose = require('mongoose')
const UserModel = require('./User.js')
const router = express.Router()
app.listen(3000, () => {
console.info('example app listening on port 3000')
let db = mongoose.connect('mongodb://testuser:[email protected]:49252/assignment',{ useNewUrlParser: true })
})
let baseUrl = "http://localhost:3000"
let getAllUsers = (req, res) =>{
UserModel.find()
.exec((err, result)=>{
if (err){
console.info(err)
res.send(err)
} else if (result === undefined || result === null || result === ''){
console.info("No Users Found")
res.send("No Users Found")
} else {
console.info('All User Found')
res.send(result)
}
})
} // end get all Users
app.get(baseUrl+'/users', getAllUsers)
app.get(baseUrl+'/users/:userId')
module.exports = (app);
Ниже приведена структура мангуста, которую я настроил.
// importing mongoose module
const mongoose = require('mongoose')
// import schema
const Schema = mongoose.Schema;
let userSchema = new Schema(
{
userId: {
type: String,
unique: true
},
firstName: {
type: String,
default: ''
},
lastName: {
type: String,
default: ''
},
email: {
type: String,
default: ''
}
}
)
mongoose.model('User', userSchema);
module.exports = mongoose.model('User', userSchema)
Я должен получить пустой объект или ошибку, говорящую «Пользователи не найдены».
Вам не нужен baseURL при определении маршрутов с экспрессом. Если вы следили за документацией, вы, должно быть, видели, что
app.get('/users', getAllUsers);
достаточно, чтобы определить свой маршрут.
Кроме того, вы определяете Router
в своем коде, но не используете его.
Наконец, знаете ли вы, что ваша переменная db
, определенная в обратном вызове listen()
, нигде недоступна? Он определен внутри обратного вызова, поэтому он умирает сразу после вызова этой функции.