基本上,我从另一个来源获取数据并创建我的数据库集合。但是有些数据最后有空格,后面用的时候前端会出问题。
在使用 spring mongoTemplate 配置/代码插入和更新到 MongoDB
之前,是否有一种通用的方法来修剪所有集合的所有 String
字段。
我不想为每种类型的集合及其中的每个字段编写特定的逻辑。此外,将此类逻辑放在数据库存储库级别是一种好做法吗?
最佳答案
尝试使用AbstractMongoEventListener
.例如,创建您自己的 AbstractMongoEventListener
实现:
@Component
class SaveMongoEventListener extends AbstractMongoEventListener<Object> {
@Override
public void onBeforeConvert(BeforeConvertEvent<Object> event) {
Object source = event.getSource();
for (Field field : source.getClass().getFields()) {
if (field.getType().isAssignableFrom(String.class)) {
try {
String value = (String) field.get(source);
field.setAccessible(true);
field.set(value != null ? value.trim(): value, source);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
}
此实现将在将对象转换为 MongoDB 对象之前修剪对象中的所有字符串。监听器应该适用于您的所有收藏。不要忘记在 Spring 上下文中注册此监听器。
要在从 MongoDB 加载后修剪字符串,您应该在 onAfterConvert
中执行相同的操作事件。
关于mongodb - 如何在使用 MongoTemplate 插入 MongoDB 之前修剪字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49378931/