MongDB иногда не возвращает результаты - PullRequest
0 голосов
/ 05 мая 2020

Это очень странно, но начнем.

Я использую фреймворк sails js и серверную часть mongodb. Иногда я получаю сообщение об ошибке, что фреймворк не может найти запись, которая, как я знаю, существует в базе данных. Я включил регистрацию в mon go db.setLogLevel(1), и результат будет следующим. Тот же самый запрос не получает данных, и, хоть убей, не могу понять почему.

Данные не возвращены, документы не проверены

2020-05-05T15:51:16.220+0200 I COMMAND  [conn82] command sails.services command: find { find: "services", filter: { userId: "5de7808067988c7f1e580895" }, projection: {}, limit: 1, $db: "sails" } planSummary: IXSCAN { userId: 1 } keysExamined:0 docsExamined:0 cursorExhausted:1 numYields:0 nreturned:0 reslen:102 locks:{ Global: { acquireCount: { r: 2 } }, MMAPV1Journal: { acquireCount: { r: 1 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { R: 1 } } } protocol:op_query 0ms

Данные возвращены, как ожидалось

2020-05-05T16:02:03.781+0200 I COMMAND  [conn68] command sails.services command: find { find: "services", filter: { userId: "5de7808067988c7f1e580895" }, projection: {}, limit: 1, $db: "sails" } planSummary: IXSCAN { userId: 1 } keysExamined:1 docsExamined:1 cursorExhausted:1 numYields:0 nreturned:1 reslen:318 locks:{ Global: { acquireCount: { r: 2 } }, MMAPV1Journal: { acquireCount: { r: 1 } }, Database: { acquireCount: { r: 1 } }, Collection: { acquireCount: { R: 1 } } } protocol:op_query 0ms

userId индексируется в Коллекции служб

> db.services.getIndexes();
[
    {
        "v" : 2,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "sails.services"
    },
    {
        "v" : 2,
        "key" : {
            "username" : 1
        },
        "name" : "username_1",
        "ns" : "sails.services"
    },
    {
        "v" : 2,
        "key" : {
            "userId" : 1
        },
        "name" : "userId_1",
        "ns" : "sails.services"
    }
]

Поскольку запросы ничего не возвращают из mongod.log, я предполагаю, что это не имеет ничего общего с парусами. Есть ли у кого-нибудь подсказки относительно того, почему / как это может случиться и, может быть, как я могу это исправить?

MongoDB server version: 3.6.9

Ubuntu 16.04.1 LTS

EDIT:

Поскольку запрос исходит от парусов. js, мой запрос выглядит следующим образом.

  usage: function (req, res) {
    var userId = req.param('userId')


            Services.findOne({ userId: userId}).exec(function (err, service) {
              if (err) {
                console.log('Clients/Usage -2 ####Error finding service with userId: ' + userId, err)
                return res.send(401, err)
              } else {
                if (service === undefined) {
                  console.log('Clients/Usage -2 ####No service found')
                  return res.send(401, 'No service found')
                } else {
                  console.log('Clients/Usage -2 DEBUG! sending service as a response', service)
                  return res.send(201, service)
                }
              }
            })
}

пользователи попадают в API по адресу services/usage?id=

...