首页 > 解决方案 > lodash过滤嵌套的json

问题描述

嗨,我有以下 json 数据...

    {
    "contacts":
    [
        {
            "contactId": "00001",
            "firstName": "test",
            "lastName": "test",
            "email": "test@test.com",
            "phone": "0207 0000000",
            "role": "Surveyor",
            "customer": "00001",
            "projects": [{"projId": "00002"}]
        },
        {
            "contactId": "00002",
            "firstName": "test1",
            "lastName": "test1",
            "email": "test@test.com",
            "phone": "0207 1111111",
            "role": "Manager",
            "customer": "00001",
            "projects": [{"projId": "00002"}, {"projId": "00003"}]
        }
    ]
}

我需要一个 API 端点,它根据 projID 返回联系人,但由于 projId 嵌套在项目数组中而遇到问题......

    //Get contacts by Project
app.get('/v1/projcontacts/:id', function(req, res) {
    var id = req.params.id;
    var projContacts = lodash.filter(contactData.contacts, { 'projId': id });
    res.json(projContacts);
})

任何人都可以帮助我使用上面的代码让 lodash 查看项目内部吗?

标签: node.jslodash

解决方案


你可以尝试这样的事情:

app.get('/v1/projcontacts/:id', function(req, res) {
  var id = req.params.id;
  var projContacts = contacts.filter(
    contact => contact.projects.map(
      projects => projects.projId === id
    ).includes(true)
  )
  res.json(projContacts);
})


推荐阅读