如何比较mongoose中数组的键值对的值并检索它

时间:2017-03-22 08:00:23

标签: node.js mongodb mongoose

我有批量收集的数据,如下所示:

[
  {
    "_id": "58d21104a2b6940fd99db632",
    "username": "58d18698669fd20ea0b81720",
    "batchname": "dynamic",
    "time": "21:20",
    "activityname": "dance",
    "eventtype": "demo",
    "duration": 50,
    "price": "120$",
    "__v": 0,
    "trainer": [
      {
        "trainername": "ramu",
        "_id": "58d21104a2b6940fd99db633"
      }
    ]
  },
  {
    "_id": "58d226eb5f73f7150ffc3181",
    "username": "58d18698669fd20ea0b81721",
    "batchname": "spck",
    "time": "21:20",
    "activityname": "dance",
    "eventtype": "demo",
    "duration": 50,
    "price": "120$",
    "__v": 0,
    "trainer": []
  },
  {
    "_id": "58d22745079e481533f23bbe",
    "username": "58d18698669fd20ea0b81721",
    "batchname": "spctygytgyk",
    "time": "21:20",
    "activityname": "music",
    "eventtype": "demo",
    "duration": 50,
    "price": "120$",
    "__v": 0,
    "trainer": [
      {
        "trainername": "siva",
        "_id": "58d22745079e481533f23bbf"
      }
    ]
  }
]

因为我想检索其活动名称与url中的参数send匹配的批次的详细信息。我把代码编写为:

batchrouter.route('/activity/:activityName')
.get(Verify.verifyOrdinaryUser,function (req, res, next) {
 Batch.find({"activityname":"req.params.activityName"}, function (err, batch) {
        if (err) throw err;
        res.json(batch);
    });
});

当执行路由为localhost:3000/batch/activity/dance时,它返回一个空数组[]。如何修改代码,以便我想在activityname跳舞时检索批次详细信息。我是mongodb和mongoose的新手。请帮帮我。

1 个答案:

答案 0 :(得分:5)

您将活动名称("req.params.activityName" with quotes)作为字符串而不是实际值传递。将代码更新为以下

Batch.find({"activityname":req.params.activityName}