#node.js #mongodb #mongoose
#node.js #mongodb #мангуст #mongoose
Вопрос:
Я пытаюсь создать Node.js Конечная точка API для возврата некоторых значений для заполнения элемента управления 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, но возвращается пустая строка. Есть идеи?
Спасибо!
Комментарии:
1. Кстати, вы не указываете идентификатор проекта. Переведите консольный журнал в статус. Не имеет смысла, что это вернет строку, find не возвращает строк.
2. Спасибо за ваш комментарий. Мне не нужно возвращать идентификатор проекта здесь. Что возвращает find? Я ожидаю JSON, который является строкой, верно?
3. Find вернет массив со всеми найденными документами в виде объектов javascript
Ответ №1:
Вы упускаете Schema
const Schema = mongoose.Schema;
const projStatusModel = mongoose.model("projectStatusValues", new Schema ({
"projectStatusDesc": [
String
]
}));
Комментарии:
1. Спасибо за это. Пробовал, но все равно возвращает пустую строку. У меня есть другие API, которые, похоже, отлично работают без определения схемы, просто используя только model, как в моем примере. Должен ли я всегда определять схему? Каковы последствия того, что я не определил его, учитывая, что без моего другого API все работает нормально?
2. Я не знал, что это будет работать без схемы, но поскольку в документации каждый раз используется схема, я бы предложил сделать то же самое. Я заметил, что вы назвали модель
projectStatusValues
и используете в своем контроллере какprojStatusModel
. Это специально?3. projectStatusValues — это имя коллекции
4. Я называю модель projStatusModel при определении как константу и при использовании в контроллере.
Ответ №2:
Переименовал коллекцию из projectStatusValues в projectstatusvalues, и это сработало.