findOne смог найти документ в MongoDB. Однако результат не был отображен в JSON сотрудников объекта. Результат Findone был напечатан на консоли, и было ясно, что запрос вернул хороший результат.
Я новичок в Angular, NodeJS и MongoDB. Много часов было потрачено на изучение этой проблемы, но решить эту «странную» проблему не удалось. "странно", потому что findOne был инициирован "сотрудниками". и ожидаемый результат будет напрямую передан объекту employeeLs. Кроме того, это был прямой вопрос для сотрудников. Любая помощь приветствуется.
Ниже, пожалуйста, найдите информацию о кодировании.
кодирование маршрута
const express = require('express');
const mongoose = require('mongoose');
//const Schema = mongoose.Schema;
const bodyParser = require('body-parser');
const { Console } = require('console');
const mongooseClient = require('mongoose'); /* this is important */
var employeeLs = require('../model/staffLeave');
const staffLeaveRouter = express.Router();
const util = require('util');
staffLeaveRouter.use(bodyParser.json());
staffLeaveRouter.use(bodyParser.urlencoded({ extended: false }));
staffLeaveRouter.route('/:staff_id')
.get((req,res,next) => {
employeeLs.findOne({staff_id : req.params.staff_id})
.populate(staffRecords._id)
.then(result => {
console.log(result);
console.log('lllll - inside retreival by staffid',JSON.stringify(util.inspect(employeeLs,{showHidden:false,depth:5})));
/* console.dir(employeeLs,this.options); */
employeeLs : result;
}
)
.then((employeeLs) => {
if (employeeLs != null)
{res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(employeeLs)}
else{
err = new Error('Staffleave using staff ID to find '+req.params.staff_id+' not found');
err.status = 404;
return next(err);
}
}, (err) => next(err))
.catch((err) => next(err));
})
Схема кодирования
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
require('mongoose-currency').loadType(mongoose);
const Currency = mongoose.Types.Currency;
const staffLeaveSchema = new Schema({
_id: {type: mongoose.Types.ObjectId, required: true},
staff_id: {type: mongoose.Types.ObjectId, required: true,
ref: 'staffRecord'},
staffUsername: {type: String, required: true},
year: {type: Number, required: true},
annualLeaveEntitlement: {type: Number, required: true},
carryOver: {type: Number, required: true},
thisYearTotalAllowed: {type: Number, required: true},
taken: {type: Number, required: false},
scheduled: {type: Number, required: false},
thisYearRemaing: {type: Number, required: false},
sickLeaveTaken: {type: Number, required: false},
maternityLeaveTaken: {type: Number, required: false},
noPayLeaveTaken: {type: Number, required: false},
familyLeaveTaken: {type: Number, required: false},
});
var staffLeave = mongoose.model('staffLeave', staffLeaveSchema);
module.exports = staffLeave;
Из журнала консоли результат findone вернул , как показано ниже. Однако система по-прежнему сообщала, что значение employeeLs по-прежнему равно нулю. Он не был обработан должным образом.
{
_id: 5f069b7821233471ec530b80,
staff_id: 5edfd3bf07cc253f1065de24,
staffUsername: 'dwong',
year: 2020,
annualLeaveEntitlement: 10,
carryOver: 2,
thisYearTotalAllowed: 12,
taken: 0,
scheduled: 0,
thisYearRemaing: 12,
sickLeaveTaken: 0,
maternityLeaveTaken: 0,
noPayLeaveTaken: 0,
familyLeaveTaken: 0,
__v: 0
}