我正在研究用户在SQL中注册年龄,肤色,语言,高度等属性的项目。
我想为接受范围值的注册用户提供搜索功能。示例搜索15至20岁之间的用户,他们可以说英语和法语,肤色为黑色。此请求也必须存储在SQL中。
执行此操作的一种方法是: 提供基于被搜索属性构造的请求对象。 像
searchUsersRequest : {
"age" : {
"min" : 15
"max" : 20
},
"languages" : [
"English",
"French"
],
"skinColor" : [
"Brown",
"Black"
],
.
.
.
.
}
阅读请求后,创建查询并在db。上运行。
以下是两个问题:
有没有更好的方法/通用方法来解决这个问题?
我应该如何在DB中存储此请求对象?我应该只将它存储为一个字符串或任何其他更好的方式吗?
提前感谢您的建议!
答案 0 :(得分:0)
1)让我们假装您有一个请求对象SearchUsersRequest
,其中包含构建查询所需的所有信息。
这个对象可以被解析"如果您使用的是ORM,则会自定义FilterBuilder
来构建原始查询或更复杂的QueryFilter
。
谈到通用方法,您可以抽象"搜索请求" teautures到自定义类hieracy并使用它来为您的FilterBuilder方法定义特定参数。
2)为什么需要将其存储到数据库中?这不是一种常见的方法。但是,如果它是强制性要求,那么您可以使用 json 或某种 xml 表示法来保持对象结构和字符串(或varchar)作为数据库类型。然后,当您从数据库中检索它时,您必须解析它以构建您的请求对象
希望这可以帮到你