Поиск дочерних данных на основе родительского идентификатора в парусах (ватерлинии ORM)

У меня есть простая пользовательская модель, определенная в sailsj, как показано ниже. Единственное, что следует отметить, это то, что пользователь имеет ссылку на пользователя в качестве своего менеджера. Я пытаюсь понять, как я могу запросить эту модель, чтобы она возвращала пользователей, и если кто-то из этих пользователей является менеджером, то также включает в себя этих субпользователей, и так далее, и так далее.

В оракуле было условие "подключиться по предварительному запросу", однако мне не удалось найти что-то для паруса (или ватерлинии).

module.exports = {

 attributes: {

  username: {
    type: 'string',
    unique: 'true',
    required: 'true'
  },

  systemRoleCd: {
    type: 'string',
    enum: ['normal', 'admin']
  },

  firstName: {
    type: 'string'
  },

  lastName: {
    type: 'string'
  },

  //The users direct manager
  manager: {
    model: 'User'
  },

  email: {
    type: 'string',
    email: 'true',
    unique: 'true'
  },

  //This is the encrypted password
  password: {
     type: 'string'
  },

  deleted: {
    type: 'boolean'
  }
 }
};

1 ответ

С предположением: пользователь может иметь не более одного менеджера и может иметь много подчиненных.

Попробуйте это в models/User.js:

subordinates: {
  collection: 'user',
  via: 'manager'
},

manager: {
  model: 'user'
}

С .populate (), менеджер пользователя и подчиненные должны быть возвращены.

Другие вопросы по тегам