Запрос Mongoose не возвращает значений

#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 в правильном направлении.