一直纠结用外键还是不用外键,请教 外键 在前端的显示问题
,
外键字段, 后端返回什么值给前端? 因为外键都是指向id的,
举例, 如果 user 是外键字段
后端返回Json? { userId:'', userName:''}
数据库user字段, 返回前端两个字段, userId,userName
只返回userId没有可读性
只返回userName, 没有操作性..
大家是怎么做 的????
前端一般显示userName什么的,userId主要看前端显示或者操作逻辑是否用到userId,不需要的话不用返回给前端,
即使返回userId给前端做某些操作,在请求服务器端接口保存时,也需要在服务器端验证过一次(此时用到cookie中的token或者加密后的身份数据什么的),而不能靠回传服务器的userId来直接操作,这样不安全。
有些时候如果出现未知bug,最好是返回userId显示出来,方便定位这些用户,找到bug的原因。
userId是一定要返回的,很多业务操作都是根据userId判断是哪个用户进行了操作,
然后,userName如果前端页面需要展示就返回;如果不需要展示,那就无关紧要,不返回也可以。
往数据库中添加数据或者在页面中显示数据的时候
如果遇到中文出现乱码
添加到网址的时候也显示乱码
这篇文中将举出几种例子解答疑惑
解决该问题的一种具体方案是在前端页面上显示外键字段对应的分类名称。以下是解决方案的步骤:
在产品表中添加一个字段来存储外键对应的分类名称。可以为这个字段取名为"categoryName",数据类型为字符串。
在后端代码中进行数据查询操作,并将查询结果中的外键字段的值替换为对应的分类名称。
在前端页面中显示产品数据时,使用替换后的外键字段的值(即分类名称)。
下面是一个使用Java代码的示例:
// 后端代码
// 导入相关的类
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
// 获取产品数据的方法
public List<Product> getProducts() {
// 查询产品表的数据
List<Product> products = productService.getAllProducts();
// 查询分类表的数据
List<Category> categories = categoryService.getAllCategories();
// 将分类表的数据转换为Map,以分类ID为键,分类名称为值
Map<Long, String> categoryMap = categories.stream()
.collect(Collectors.toMap(Category::getId, Category::getName));
// 替换产品表中外键字段的值为对应的分类名称
products.forEach(product -> {
String categoryName = categoryMap.get(product.getCategoryId());
product.setCategoryName(categoryName);
});
return products;
}
<!-- 前端页面代码 -->
<!-- 在产品列表中显示产品数据 -->
<table>
<tr>
<th>产品名称</th>
<th>分类名称</th>
</tr>
{{#each products}}
<tr>
<td>{{name}}</td>
<td>{{categoryName}}</td>
</tr>
{{/each}}
</table>
请注意,上述示例代码是一个简化的示例,实际应用中可能需要根据具体的技术栈和框架进行适当的调整和改进。此外,还需要根据后端数据库的操作方式和前端页面的实现方式进行相应的调整。