【发布时间】:2021-11-08 23:46:49
【问题描述】:
我的应用中有不同的方法来获取用户:
1. Fetch international users
2. Fetch users from same region
3. Fetch users from same city
目前,我已经为每个实现了 1 种方法:
const fetchIntenationalUsers = async (limit = 10) => {
const result = await db.collection("users").limit(limit).get();
...
return parseUsers(result);
}
const fetchSameRegionUsers = async (region, limit = 10) => {
const result = await db.collection("users").where("region", "==", region).limit(limit).get();
...
return parseUsers(result);
}
const fetchSameCityUsers = async (city, limit = 10) => {
const result = await db.collection("users").where("city", "==", city).limit(limit).get();
...
return parseUsers(result);
}
我曾想过创建一个通用方法,例如:
const fetchUsers = (queryType = "international", location = {}, limit = 10) => {
const queries = {
"international": db.collection("users"),
"region": db.collection("users").where("region", "==", location.region),
"city": db.collection("users").where("city", "==", location.city),
};
const result = await queries[queryType].limit(limit).get();
...
return parseUsers(result);
}
但我不确定这是反模式还是设计模式。还有其他方法吗?
【问题讨论】:
标签: javascript design-patterns ecmascript-6