将数据作为对象传递给mongoDb,用作查询和比较

时间:2018-06-24 17:28:06

标签: javascript node.js mongodb express mongoose

我的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'
       }))
    }
  })
});

因此,如果存在键值对,则后端将返回确定,否则返回未找到。 它适用于这种简单的对象,但是如果我尝试传递类似以下内容的话:

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

在此示例中,用户有4个输入字段,我收集了所有答案并将其传递给后端,但是即使答案正确,也无法给我带来好处。

请问您是否可以建议比较数据的更好方法,或者如何解决第二个比较问题?

1 个答案:

答案 0 :(得分:1)

由于要在嵌入式文档中查找,因此无法查询嵌入式文档。

要查询嵌入式文档,您需要执行以下操作:

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

这应该可以解决问题。