首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理vuex-orm中的嵌套对象

如何处理vuex-orm中的嵌套对象
EN

Stack Overflow用户
提问于 2020-05-29 17:52:09
回答 1查看 684关注 0票数 2

我有一个目标:

userRights

代码语言:javascript
复制
{
  "admin": true,
  "rights": [
    {
      "id": 1,
      "value": true
    },
    {
      "id": 2,
      "value": true
    },
    {
      "id": 3,
      "value": true
    },
    {
      "id": 4,
      "value": true
    },
    {
      "id": 5,
      "value": true
    },
    {
      "id": 6,
      "value": true
    },
    {
      "id": 7,
      "value": true
    }
  ]
}

应该将value与映射的id映射到以下对象数组:

rights

代码语言:javascript
复制
[
  {
    idModule: 1,
    name: 'admin.rights',
    caption: 'Rechte verwalten',
    default: false,
    id: 1,
  },
  {
    idModule: 1,
    name: 'reports',
    caption: 'Reports einsehen',
    default: false,
    id: 2,
  },
  {
    idModule: 1,
    name: 'admin.maintenance',
    caption: 'Wartungsarbeiten durchführen',
    default: false,
    id: 3,
  },
  {
    idModule: 2,
    name: 'users',
    caption: 'Benutzer einsehen',
    default: false,
    id: 4,
  },
  {
    idModule: 2,
    name: 'users.write',
    caption: 'Benutzer anlegen, ändern',
    default: false,
    id: 5,
  },
  {
    idModule: 2,
    name: 'users.passwords',
    caption: 'Benutzer-Passwörter ändern',
    default: false,
    id: 6,
  },
  {
    idModule: 2,
    name: 'users.delete',
    caption: 'Benutzer löschen',
    default: false,
    id: 7,
  },
];

userRights.rights中的id应该与rights[0].id的id映射,然后在对象的rights数组中创建一个新元素作为value: true/false

自动取款机我这么做但我被卡住了:

代码语言:javascript
复制
rights.js

import { Model } from '@vuex-orm/core';
import userRights from './userRights';

export default class Right extends Model {
  static entity = 'right';

  static fields() {
    return {
      id: this.attr(null),
      idModule: this.attr(null),
      name: this.attr(''),
      caption: this.attr(''),
      default: this.attr(null),
      value: this.belongsTo(userRight, 'rights.value'),
    };
  }
}

-----------------------------------
userRights.js

import { Model } from '@vuex-orm/core';

export default class UserRight extends Model {
  static entity = 'userRight';

  static fields() {
    return {
      admin: this.attr(null),
      rights: this.attr([]),
    };
  }
}

我怎样才能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-29 18:10:02

您可以使用map来实现这一点。

代码语言:javascript
复制
var userRights = { "admin": true, "rights": [ { "id": 1, "value": true }, { "id": 2, "value": true }, { "id": 3, "value": true }, { "id": 4, "value": true }, { "id": 5, "value": true }, { "id": 6, "value": false }, { "id": 7, "value": true } ]}

var rights = [ { idModule: 1, name: 'admin.rights', caption: 'Rechte verwalten', default: false, id: 1, }, { idModule: 1, name: 'reports', caption: 'Reports einsehen', default: false, id: 2, }, { idModule: 1, name: 'admin.maintenance', caption: 'Wartungsarbeiten durchführen', default: false, id: 3, }, { idModule: 2, name: 'users', caption: 'Benutzer einsehen', default: false, id: 4, }, { idModule: 2, name: 'users.write', caption: 'Benutzer anlegen, ändern', default: false, id: 5, }, { idModule: 2, name: 'users.passwords', caption: 'Benutzer-Passwörter ändern', default: false, id: 6, }, { idModule: 2, name: 'users.delete', caption: 'Benutzer löschen', default: false, id: 7}];

result = rights.map(val=>{
  val.value = userRights.rights.find(k=>k.id==val.id).value;
  return val;
});

console.log(result);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62091911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档