<p>我的短信应用程序的一个核心功能是允许用户根据自己的电话号码找到也在使用该服务的朋友。像Whatsapp和Snapchat这样的应用也有同样的机制。在</p>
<p>我正在努力寻找一个能返回大量结果的解决方案。我想知道大多数其他的应用程序是如何实现这一功能的。在</p>
<p>我目前的实现是有用户模型和PhoneUser模型。PhoneUser模型的关键是用户的电话号码,该号码已转换为标准的E164格式。它有一个KeyProperty将其链接到相应的用户。在</p>
<pre><code>class PhoneUser(ndb.Model):
# id is the phone number in E164 format
user = ndb.KeyProperty(kind='User', required=True)
</code></pre>
<p>当用户注册该服务并授予其电话联系人的访问权限时,该应用程序可以从用户的电话簿中获取大量电话号码。1000个数字并非不可能。我将所有这些数字转换成标准的E164格式,然后为每一个(即。ndb.密钥(“电话用户”,电话号码)。有了电话用户密钥列表,我可以使用ndb.get_multi公司(列出_phoneuser_键)。这样我就可以避免查询1000个号码。在</p>
<p>理论上,假设用户正确地输入带有国家代码的电话号码,这样python phonenumbers库就可以解析它。在</p>
<p>然而,很多时候情况并非如此,但这种方法需要它,因为通过键获取实体需要精确匹配。在</p>
<p>这只是我想到的一种方法,它有它的缺点。这似乎是应用程序中非常常见的功能,我想知道是否有更好的方法。在</p>