node.js - 对象作为 React 孩子无效 - 必须访问两个孩子
问题描述
我使用了 mongodb 的查找功能,我的输出包含两个对象。它通过邮递员成功检索,但我无法在反应应用程序上显示它。
这是从 monogodb 获取输出的后端代码。
router.get("/employeepoints", (req, res) => {
let empno = req.params.name;
employees.aggregate([{
$lookup: {
from:"assignment_assignedtostaffs",
localField:"empno",
foreignField:"emp_no",
as:"progress"
}}
])
.exec((err, check) => {
var l = check.length;
return res.status(200).json({
success: true,
check: check,
l: l,
});
});
});
邮递员的输出
{
"success": true,
"check": [
{
"_id": "6138f90bcf5f00948da795bb",
"empno": 69,
"name": "Nandasena",
"progress":[
{
"_id": "6139a1336d16d204cc9b7504",
"assignment_name": "Assignment2",
"client_no": "clie3",
"execid": "exec20",
"place_of_engagement": "California",
"distance": 4,
"date_of_allocation": "2021-09-02T00:00:00.000Z",
"deadline": "2021-09-18T00:00:00.000Z",
"emp_no": 69,
"progress": "Working",
"__v": 0,
"travel_allowance": 350
}
]
}
]
}
通过 React 获得上述输出。我可以访问检查中的元素,但不能访问进度。如上所示,如何访问正在进行的元素。
<tbody class="tbody1">
{this.state.employee.map((employees, index) => (
<tr key={index}>
<td>
<a href={``} style={{ textDecoration: "none" }}>
{employees.empno}
</a>
</td>
<td>{employees.name}</td>
<td>{employees.email}</td>
<td>{employees.commencement_date}</td>
<td>{employees.progress.distance}</td>
<td>1</td>
<td>
}
解决方案
您应该遍历数组以为数组中的每个项目employees.progress
返回一个新单元格,并使用.td
id
key
...
<td>{employees.commencement_date}</td>
{employees.progress.map(item => (
<td key={item.id}>
{item.distance}
</td>
))}
<td>1</td>
推荐阅读
- json - JSONDecoder:为某些字段保存原始 JSON
- sequelize.js - 续集交易是原子的吗?
- python - 如何解析目录中的多个 fastq 文件?
- javascript - `#` 符号在 JavaScript 中的作用是什么?
- c - 使用 POSIX glob() 函数,gl_pathv 返回 NULL — 我如何获取文件名?
- firebase - Flutter 新手机身份验证现在在单独的浏览器中执行“不是机器人”检查,这使整个过程变慢
- python - Seaborn 在 1 个图中绘制 3 条线,其中一条向右移动
- javascript - 使用更新循环时如何在 useEffect 中获取更新状态
- java - 使用 @RequestParam 参数在 Post 方法中映射多个值(多部分数据 + json)
- reactjs - 带有反应脚本的 ESLint 配置不起作用