У меня есть эта модель user.js
const userSchema = new Schema({
name: String,
...
skills: [{
type: Schema.Types.ObjectId,
ref: 'skill'
}]
})
и модель skill.js
const skillSchema = new Schema({
name: String,
user: {
type: Schema.Types.ObjectId,
ref: 'user'
},
})
Когда я получаю всех пользователей в Angular, в html я делаю:
<div *ngFor="let user of arrUsers">
...
<span *ngFor="let skill of user.skills">
******{{PRINT skill name}}******
</span
</div>
Пользователь в mlab выглядит следующим образом:
{
"name": "a user name"
"skills": [
{
"$oid": "5c17a4269ef5b511ece55446"
}
],
}
и навыки:
{
"_id": {
"$oid": "5c17a4269ef5b511ece55446"
},
"name": "JAVA",
"user": {
"$oid": "5bf44809a15006343bc95718"
},
"__v": 0
}
в контроллере пользователя я получаю таких пользователей:
findAll: (req, res) => {
User.find()
.then(users => {
res.json(users);
}).catch(err => {
res.status(500).send({
msg: err.message
});
});
},
и массив навыков пользователя в консоли arrUsers записывает это:
... skill: Array (3)
0: "5c18dd0084a030698e17cd40"
1: "5c18dd0384a030698e17cd42"
2: "5c18dd0584a030698e17cd43" ...
Должен ли я каким-либо образом заполнять навыки в findAll?
Что такоелучший способ напечатать имя навыка?
РЕШЕНИЕ
Я должен был выполнить User.find (). populate ('skills) в моем контроллере
Благодаря ответу Златко