上下文:我正在构建一个Node.js应用程序,它需要跟踪城市中活跃用户的数量。
在服务器端,可以将城市名称映射到城市中的活动用户数量。例如,"Las Vegas" : 5。但是,对于同名的不同城市,如Newport、WA和Newport、RI,由于密钥重复,服务器无法正确更新活动用户计数。
将状态添加到键中不起作用,因为这是一个特定于美国的解决方案(e.x )。[city name]-[state])和将国家添加到密钥中也不起作用(e.x。[city-name]-[country]),因为在一个国家,这并不包括同名的不同城市。
我已经研究过在键中嵌入纬度和经度数据,但这可能是不可能使用的,因为城市边界变化很大。问题是,我可以确保相同名称的不同城市以不同格式的键出现在字典中,比如city-[longNum]-[latNum]。客户端,我可以得到城市名称、经度和纬度坐标,但很明显,客户端的坐标与城市坐标的不完全相同,因此无法使用city-[longNum]-[latNum]格式在服务器字典中正确定位客户端的城市。
如果客户机在一个重复的城市中,是否有任何方法从字典/映射中定位客户端的正确城市?我正在考虑使用Redis的地理空间索引,但我不确定这是否适用于这个问题。
发布于 2019-09-04 07:55:57
这是关于如何设计城市存储城市名称的策略,而不是使用字典的问题。
您可以将城市的信息放置在如下结构中,并将其序列化。
{
"country": "USA",
"name": "Newport",
"subdivision": "WA",
}您可以使用更多字段,其中一些字段可能是空的,这取决于其他字段。就像在一些国家,你不储存分支机构。
作为另一种选择,您可以重新设计客户端,使用城市的某种唯一标识符来使用查询信息。并从服务器上查询它们的文本名称。但这取决于在地图中数据是如何表示的。
https://stackoverflow.com/questions/57783535
复制相似问题