Это вопрос относительно REST API с использованием Express.
Заполните приложение Express, которое работает на порту 3000 и подключается к назначению базы данных.
База данных должна иметь коллекцию пользователей, которая содержит следующие данные пользователя.
а) userId - "user1",
firstName - «Акшай»,
lastName - "Кумар",
электронная почта - "khiladi@gmail.com"
б) userId - "user2"
firstName - "Раджникант",
Фамилия - "",
электронная почта - "boss@rajnikanth.com"
ВЫШЕ ЧАСТЬ БАЗЫ ДАННЫХ НЕ НУЖНА (я на всякий случай разместил весь вопрос)
Приложение должно иметь следующий API -
/ users - возвращает JSON всех пользователей в БД
/ users /: userId - возвращает объект одного пользователя на основе переданного userId
Редактировать следующие файлы в данном приложении -
response.js
app.js
И сделайте его полностью функциональным REST API со следующими двумя типами ответов:
а) Ошибка ответа -
{'IsError': true, 'status' ': 500,' errorMessage ':'’ Some error message' ', successMessage: null}
б) Успешный ответ -
{‘IsError’: false, 'status' ': 200,' errorMessage ': null, successMessage: ’Некоторый результат’}
ПРИМЕЧАНИЕ. Вы не обязаны использовать app.listen (). Это будет обработано системой.
* /
Я пробовал это решение:
app.get('/users', function(req, res, err) {
UserModel.find(function(err, result){
if(err) {
let apiResponse = response.generateResponse(true, 500, "Some
error message", null);
res.send(apiResponse);
} else {
let apiResponse = response.generateResponse(false, 200, "Some
result", result);
res.send(apiResponse);
}
});
});
app.get('/users/:userId', function(req, res, err){
BlogModel.findOne({ 'blogId': req.params.userId }, (err, result) => {
if (err) {
let apiResponse = response.generateResponse(true, 500, "Some error message", null);
res.send(apiResponse);
} else {
let apiResponse = response.generateResponse(false, 200, "Some result", result);
res.send(apiResponse);
}
});
});
Но выдает логическое сообщение об ошибке.
Я должен отправить код онлайн, где я отвечу на свое задание, а их компилятор веб-сайта просто скажет, есть ли ошибка sytnax или логическая ошибка.
Как я уже упоминал ранее, я должен отправить его на веб-сайт, чтобы не получить по-настоящему результатов, но этот код прекрасно работает, когда я запускаю его на своем коде Visual Studio.
Я думаю, что есть некоторая логическая ошибка, которую я не могу понять.
ВСЕ ФАЙЛЫ .JS:
app.js
const express = require('express');
const app = express();
const mongoose = require('mongoose');
const UserModel = require('./User.js');
let db = mongoose.connect('mongodb://testuser:password123@ds149252.mlab.com:49252/assignment', { useMongoClient: true });
const responseLib = require('./responseLib');
app.get('/users', function(req, res, err) {
UserModel.find(function(err, result){
if(err) {
let apiResponse = response.generateResponse(true, 500, "Some error message", null);
res.send(apiResponse);
} else {
let apiResponse = response.generateResponse(false, 200, "Some result", result);
res.send(apiResponse);
}
});
});
app.get('/users/:userId', function(req, res, err){
BlogModel.findOne({ 'blogId': req.params.userId }, (err, result) => {
if (err) {
let apiResponse = response.generateResponse(true, 500, "Some error message", null);
res.send(apiResponse);
} else {
let apiResponse = response.generateResponse(false, 200, "Some result", result);
res.send(apiResponse);
}
});
});
module.exports = app;
Users.js
// importing mongoose module
// 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)
responseLib.js
let generateResponse = (isError,status,errorMessage,successMessage) =>{
let response = {
isError : isError,
status : status,
errorMessage : errorMessage,
successMessage : successMessage
}
return response
};// end generate response.
module.exports = {generateResponse:generateResponse}