#node.js #mongodb #express #mongoose
#node.js #mongodb #экспресс #mongoose
Вопрос:
В настоящее время я создаю приложение MEAN, позволяющее пользователю создавать футбольную команду из списка собственных игроков. Однако в настоящее время, когда я пытаюсь выполнить http.get вызов коллекции ownedPlayers в MongoDB, он всегда возвращает пустой массив.
Моя модель mongoose для OwnedPlayers выглядит следующим образом.
var OwnedPlayers = mongoose.model('OwnedPlayers', {
userid: String,
playerid: String,
position: String
});
Конечная точка и запрос выглядят следующим образом.
app.get('/api/ownedPlayers', function (req, res) {
console.log('userid used in request', req.query.userid)
console.log('position used in request', req.query.position)
OwnedPlayers.find({
userid: req.query.userid, position: req.query.position
}, function (err, owned)
{
if (err)
{
res.send(err);
}
console.log('owned',owned);
res.json(owned);
});
});
Я могу подтвердить, что значения в req.запрос.идентификатор пользователя и запрос.query.position соответствует одной записи в моей коллекции ownedPlayers. Это видно из моего вывода nodejs ниже.
App listening on port 8080
GET /api/teams/57f50267418cb72fd020196a 304 31.936 ms - -
userid used in request 57f50267418cb72fd020196a
position used in request goal
owned []
GET /api/ownedPlayers?userid=57f50267418cb72fd020196aamp;position=goal 304 32.903 ms - -
Я также могу подтвердить, что имена ключей верны в качестве идентификатора пользователя и позиции.
Документ, который я ожидал бы вернуть, когда userid = 57f50267418cb72fd020196a и position = position= goal выглядит следующим образом.
_id:57f7717ab1f0f22f3c3950b9
userid:57f50267418cb72fd020196a
playerid:57f7797e00ea2a0dc8609701
position:goal
Любая помощь была бы очень признательна, поскольку я очень новичок в приложениях mongodb и mean.
Заранее спасибо.
Комментарии:
1. Как вы создаете экземпляр
OwnedPlayers
?2. Я не уверен, что вы имеете в виду? Я включил раздел, в котором я описываю модель данных, которая будет использоваться для OwnedPlayers, разве это не одно и то же? Прошу прощения, если это глупый вопрос, я все еще ношу свои нашивки для новичков. Я делаю фактический http-запрос от поставщика angular 2. Я включу код для этого. и где я делаю вызов в файле view typescript в моем первоначальном вопросе.
3. Удалите угловой код, покажите серверный код создания
OwnedPlayers
4. Попробуйте изменить .find на .findOne
5. У меня нет кода для создания собственных игроков, в настоящее время я добавляю их вручную в коллекцию из mongocompass. Я намерен добавить это, как только у меня заработает запрос get, если это неверно, я добавлю конечную точку post. Нужно ли мне иметь конечную точку app.post, чтобы иметь возможность извлекать информацию?
Ответ №1:
Проблема заключалась в том, что, поскольку я использовал коллекцию с документами, которые не были созданы с помощью mongoose, она неправильно находила коллекцию.
Передавая имя коллекции в качестве третьего параметра при создании моих моделей, это явно задает имя коллекции и указывает mongoose в правильном направлении.