Я пытаюсь создать конечную точку API Node.js, чтобы возвращать некоторые значения для заполнения элемента управления select.
У меня есть следующий документ в коллекции под названием projectStatusValues...
{
"_id": {
"$oid": "5cab4b2b38802527df2f7ab2"
},
"projectStatusDesc": [
"Complete",
"Pre-Start",
"Active"
]
}
И моя модель Mongoose определяется как...
const projStatusModel = mongoose.model("projectStatusValues", {
"projectStatusDesc": [
String
]
});
Наконец, я использую этот код для извлечения значений массива...
app.get('/v1/projStatus', async (request, response) => {
try {
var status = await projStatusModel.find().exec();
response.send(status);
} catch (error) {
response.status(500).send(error);
}
});
Конечная точка выглядит хорошо, и я получаю ответ 200, но возвращается пустая строка. Есть идеи?
Спасибо!
Спасибо за ваш комментарий. Мне не нужно возвращать идентификатор проекта здесь. Что находит возвращение? Я ожидаю JSON, который является строкой, верно?
Find вернет массив со всеми найденными документами в виде объектов javascript.





Тебя не хватает Schema
const Schema = mongoose.Schema;
const projStatusModel = mongoose.model("projectStatusValues", new Schema ({
"projectStatusDesc": [
String
]
}));
Спасибо за это. Пробовал, но все равно возвращает пустую строку. У меня есть другие API, которые, кажется, отлично работают без определения схемы, просто используя только модель, как в моем примере. Должен ли я всегда определять схему? Каковы последствия того, что я не определяю его, учитывая, что все мои другие API работают нормально без него?
Я не знал, что это будет работать без схемы, но поскольку документация каждый раз использует схему, я бы посоветовал сделать то же самое. Я заметил, что вы назвали модель projectStatusValues и используете в своем контроллере как projStatusModel. Это специально?
projectStatusValues — это имя коллекции
Я называю модель projStatusModel при определении в качестве константы и при использовании в контроллере.
Переименовал коллекцию из projectStatusValues в projectstatusvalues, и это сработало.
Кстати, вы не указываете идентификатор проекта. Поместите состояние входа в консоль. Не имеет смысла возвращать строку, find не возвращает строки.