Передать данные как объект в mongoDb, использовать их как запрос и сравнить - PullRequest
0 голосов
/ 24 июня 2018

У меня есть документ в моем mongoDB

enter image description here

Я передаю объект из моего интерфейса (пользователь должен ввести что-то во входной файл, например, он набрал 'test':

{'countdown': 'test'}

А потом я передаю его своему бэкэнду и хочу проверить, правильно ли он напечатал

app.post('/answ', function(req, res) {
  var query = req.body;
  Model.find(query
  , function(err, result) {
    if (err) throw err;
    if (result) {
      if(result.length!== 0) {
        res.json('ok');
      } else {
        res.json('not found');
      }
    } else {
       res.send(JSON.stringify({
         error : 'Error'
       }))
    }
  })
});

Таким образом, если пара ключ-значение существует, бэкэнд вернет ok , в противном случае не найден . Он работает для такого простого объекта, но если я попытаюсь передать что-то вроде:

{'apilisttask': { 'port': '1', 'host': '2', 'path': '3', 'query': '4' } }

В этом примере у пользователя есть 4 поля ввода, я собираю все ответы и передаю их бэкэнду, но это не дает мне нормально, даже если ответы правильные.

Не могли бы вы посоветовать, может быть, лучший подход для сравнения данных или как исправить второе сравнение?

1 Ответ

0 голосов
/ 24 июня 2018

Поскольку вы пытаетесь найти во встроенном документе, вы не можете запросить встроенный документ подобным образом.

Чтобы запросить встроенный документ, вам нужно сделать что-то вроде этого:

Model.find({'apilisttask.port':query.apilisttask.port, 'apilisttask.host':query.apilisttask.host, ...}, function(err, result){
  // ---
});

Это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...