Поиск дочерних данных на основе родительского идентификатора в парусах (ватерлинии 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 (), менеджер пользователя и подчиненные должны быть возвращены.