猫鼬协会在 ngFor 中打印
Mongoose associations print in ngFor
我有这个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 控制台中用户的技能数组记录如下:
...
skills: Array(3)
0: "5c18dd0084a030698e17cd40"
1: "5c18dd0384a030698e17cd42"
2: "5c18dd0584a030698e17cd43"
...
我应该用某种方式在 findAll 中填充技能吗?
打印技能名称的最佳方式是什么?
解决方案
I had to do User.find().populate('skills') in my controller
感谢 Zlatko 的回答
简单打印skill.name
<span *ngFor="let skill of user.skills">
{{skill.name}}
</span
这只是简单的绑定,像这样使用你的代码 -
<span *ngFor="let skill of user.skills">
{{skill?.name}} //Here skill is your object contains data having keys name and user
</span>
PS:为了调试总是更好地在模板端使用 json
管道,就像这样 -
{{skill | json}}
您需要填充查询它的技能。
类似于:
db.users.get(query).populate('skills')
然后应该填充您的技能数组。
我有这个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 控制台中用户的技能数组记录如下:
... skills: Array(3)
0: "5c18dd0084a030698e17cd40"
1: "5c18dd0384a030698e17cd42"
2: "5c18dd0584a030698e17cd43" ...
我应该用某种方式在 findAll 中填充技能吗?
打印技能名称的最佳方式是什么?
解决方案
I had to do User.find().populate('skills') in my controller
感谢 Zlatko 的回答
简单打印skill.name
<span *ngFor="let skill of user.skills">
{{skill.name}}
</span
这只是简单的绑定,像这样使用你的代码 -
<span *ngFor="let skill of user.skills">
{{skill?.name}} //Here skill is your object contains data having keys name and user
</span>
PS:为了调试总是更好地在模板端使用 json
管道,就像这样 -
{{skill | json}}
您需要填充查询它的技能。
类似于:
db.users.get(query).populate('skills')
然后应该填充您的技能数组。