Model.findOne не работает должным образом? - PullRequest
0 голосов
/ 05 октября 2018
[
  {
    "userId": "5bb6730721f28a295436b36e",
    "reputationNumber": 0,
    "questions": [],
    "answers": [],
    "id": "5bb6730721f28a295436b36f"
  },
  {
    "userId": "5bb6738c21f28a295436b370",
    "reputationNumber": 0,
    "questions": [],
    "answers": [],
    "id": "5bb6738c21f28a295436b371"
  }
]

У меня есть 2 элемента внутри модели userDatas, и я хочу найти одну userData путем фильтрации с помощью свойства userId.

Это то, что я сделал

Userdatas.findByUserId = function(req, res, cb) {
    const queryId = req.query.userId
    console.log("queryId: ",queryId);
    Userdatas.find({ userId: "5bb6738c21f28a295436b370"}, function(err, obj){
        console.log(obj);
        var userData = obj;
        cb(null, userData);
    });
}

Удивительновывод консоли

    [ { userId: '5bb6730721f28a295436b36e',
    reputationNumber: 0,
    questions: List [],
    answers: List [],
    id: 5bb6730721f28a295436b36f },
  { userId: '5bb6738c21f28a295436b370',
    reputationNumber: 0,
    questions: List [],
    answers: List [],
    id: 5bb6738c21f28a295436b371 } ]

то, что я ожидаю,

{
    "userId": "5bb6738c21f28a295436b370",
    "reputationNumber": 0,
    "questions": [],
    "answers": [],
    "id": "5bb6738c21f28a295436b371"
  }

Но запрос отлично работает в оболочке robo mongo.

1 Ответ

0 голосов
/ 05 октября 2018

в петлевых функциях «find» и «findOne» принимают запросы по этому шаблону: {where: {queryFilters}}

, поэтому в вашем примере вы можете изменить его следующим образом:

Userdatas.findByUserId = function(req, res, cb) {
    const queryId = req.query.userId
    console.log("queryId: ",queryId);
    Userdatas.findOne({ where:{userId: "5bb6738c21f28a295436b370"}}, function(err, obj){
        console.log(obj);
        var userData = obj;
        cb(null, userData);
    });
}

Откройте user-datas.json под опциями add "strictObjectIDCoercion": true property.

...