Я пытаюсь выполнить вызов API на моем express сервере, чтобы выбрать сотрудников, которые работают в одном и том же месте, на основе идентификатора местоположения. Однако вызов API возвращает только пустой массив, пока он работает в интерфейсе командной строки.
Модель сотрудника
module.exports = mongoose => {
var schema = mongoose.Schema(
{
first_name: String,
last_name: String,
address: {
housenumber: Number,
street: String,
city: String,
zip: Number,
country: String
},
phone: Number,
mobile: Number,
email: String,
enrollment_date: Date,
staff_id: Number,
location: { type : mongoose.Schema.ObjectId, ref : 'location' },
department: String,
function: String,
active: Boolean
},
{ timestamps: true }
);
schema.method("toJSON", function() {
const { __v, _id, ...object } = this.toObject();
object.id = _id;
return object;
});
const Employee = mongoose.model("employee", schema);
return Employee;
};
Маршрутизация сотрудника для API
router.get("/location/:location_id", employees.findAllByLocation);
Сотрудник обработка контроллера над вызовом
exports.findAllByLocation = (req, res) => {
Employee.find({ location: req.params.location_id })
.then(data => {
res.send(data);
})
.catch(err => {
res.status(500).send({
message:
err.message || "Some error occurred while retrieving Employees."
});
});
};
Фиктивные данные базы данных для проверки на
Результат вызова API почтальона
Однако попытка найти пользователя с этим идентификатором местоположения в интерфейсе командной строки работает и дает желаемый результат.
[
Так что как-то все испортилось, и я не могу понять, почему он это делает. Я провел некоторое исследование и обнаружил, что это может быть связано с тем, что местоположение является ссылкой в качестве ObjectId. Поэтому я попытался обернуть req.params.location_id в ObjectId, но это может исправить это, но это не сработало.
Какой лучший способ заставить это работать?