json 如何动态调用与一对多关系关联的项?

kpbpu008  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(35)

我有一个对象数组,其中每条消息都与用户相关,* 或 * 与客户相关,* 或 * 与客户相关,通过一对多关系:
我想知道的是,是否有可能在不重复代码的情况下,因此在不违反DRY原则的情况下,使用一个变量来使一切都是动态的。
下面的例子是一个console.log,但显然我们需要的不是这个,而是一个链接,它只接受与特定项目相关的消息的ID来打印其他相应的数据。

let messages = [{
    "id": 1,
    "title": "quidem molestiae enim",
    "user": {
      id: 4,
      name: 'Alex',
      surnme: 'Rossowell'
    },
    "customer": null,
    "client": null
  },
  {
    "id": 2,
    "title": "sunt qui excepturi placeat culpa",
    "client": {
      id: 7,
      name: 'Andreah',
      surnme: 'Carlos'
    },
    "customer": null,
    "user": null
  },
  {
    "id": 3,
    "title": "omnis laborum odio",
    "customer": {
      id: 2,
      name: 'Maddie',
      surnme: 'Cucurew'
    },
    "user": null,
    "client": null
  },
  {
    "id": 4,
    "title": "non esse culpa molestiae omnis sed optio",
    "user": {
      id: 5,
      name: 'Sophia',
      surnme: 'Riccon'
    },
    "customer": null,
    "client": null
  }
]

messages.map(mess => {
  mess.user && console.log(mess.user.id);
  mess.customer && console.log(mess.customer.id);
  mess.client && console.log(mess.client.id);
})

字符串
URL应该是这样的:
如果与 * 用户 * 相关:http:....data\id_user
如果与 * 客户端 * 相关:http:....data\id_client
如果与 * 客户 * 相关:http:....data\id_customer
有人能好心地帮助我吗?

hk8txs48

hk8txs481#

我可能会使用optional chaining来检测填充的属性。

const id = mess.user?.id || mess.customer?.id || mess.client?.id;

字符串

let messages = [{
    "id": 1,
    "title": "quidem molestiae enim",
    "user": {
      id: 4,
      name: 'Alex',
      surnme: 'Rossowell'
    },
    "customer": null,
    "client": null
  },
  {
    "id": 2,
    "title": "sunt qui excepturi placeat culpa",
    "client": {
      id: 7,
      name: 'Andreah',
      surnme: 'Carlos'
    },
    "customer": null,
    "user": null
  },
  {
    "id": 3,
    "title": "omnis laborum odio",
    "customer": {
      id: 2,
      name: 'Maddie',
      surnme: 'Cucurew'
    },
    "user": null,
    "client": null
  },
  {
    "id": 4,
    "title": "non esse culpa molestiae omnis sed optio",
    "user": {
      id: 5,
      name: 'Sophia',
      surnme: 'Riccon'
    },
    "customer": null,
    "client": null
  },
  {
    "id": 5,
    "title": "non esse culpa molestiae omnis sed optio",
    "customer": null,
    "client": null
  }
]

messages.map(mess => {
  console.log('Message: ', mess.id);
  const id = mess.user?.id || mess.customer?.id || mess.client?.id;
  console.log('Id: ', id ? id : 'not found');
})

相关问题