Mongoose 关联在 ngFor 中打印
Posted
技术标签:
【中文标题】Mongoose 关联在 ngFor 中打印【英文标题】:Mongoose associations print in ngFor 【发布时间】:2019-05-18 20:56:28 【问题描述】:我有这个 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 控制台中用户的技能数组记录了以下内容:
... 技能:数组(3)
0: "5c18dd0084a030698e17cd40"
1:“5c18dd0384a030698e17cd42”
2: "5c18dd0584a030698e17cd43" ...
我应该以某种方式在 findAll 中填充技能吗?
打印技能名称的最佳方法是什么?
解决方案
我必须在我的控制器中执行 User.find().populate('skills')
感谢 Zlatko 的回答
【问题讨论】:
请发arrUsers
值
【参考方案1】:
只需打印skill.name
<span *ngFor="let skill of user.skills">
skill.name
</span
【讨论】:
【参考方案2】:这只是简单的绑定,像这样使用你的代码 -
<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
【讨论】:
嘿pardeep!感谢您的回答!当我做管道时,它只会打印技能的_id。技能名称未定义。也许我应该发布更多代码? 是的,最好发布您的回复。您的对象中必须有名称为name
的键
我想我做了所有需要的编辑,谢谢你的努力【参考方案3】:
您需要填充查询它的技能。
类似:
db.users.get(query).populate('skills')
然后应该填充您的技能数组。
【讨论】:
感谢兹拉特科!我必须在我的控制器中填充以上是关于Mongoose 关联在 ngFor 中打印的主要内容,如果未能解决你的问题,请参考以下文章