搜索 - 本地处理或进行 API 调用? (Android、Node.JS、MongoDB 后端)
Posted
技术标签:
【中文标题】搜索 - 本地处理或进行 API 调用? (Android、Node.JS、MongoDB 后端)【英文标题】:Search - handle natively or make an API call? (Android, Node.JS, MongoDB Backend) 【发布时间】:2015-06-26 12:18:39 【问题描述】:我正在构建一个仅限移动设备的 电子商务 应用程序(目前是 android 应用程序),它将向用户显示事件列表。这些事件可以/将会每天发生变化。
应用程序的登录页面将对 Node.JS 服务器进行以下 API 调用以检索今天的事件(我认为
/get/events
现在,我想在我的移动应用程序上实现搜索功能。有两种方法(我猜):
使用 Android 应用的本地数据库处理 Android 应用上的搜索(这将帮助我实现自动完成功能)
当用户键入查询字符串时,对服务器进行 API 调用以检索相关结果列表。此 API 调用将从 MongoDB(文本搜索功能)中查找结果并以 JSON 格式将它们返回给 Android 应用程序,例如:
/get/search?q='Festival'
此外,我还必须实现过滤器(例如音乐、戏剧、喜剧等),所以我也有同样的问题(在 Android 或 API 调用中处理)。
以上哪种方法是首选方法?知道这一点会有很大帮助。谢谢!
【问题讨论】:
【参考方案1】:这是一个相当广泛的问题,但听起来你有这些要求:
基于 node.js 的后端工具,可让您轻松连接到现有的 mongodb 数据库 通过 REST API 搜索/查询记录 以 JSON 格式返回结果sails.js 框架开箱即用地完成所有这些事情。如果您为数据库定义模型定义,则无需编写任何自定义逻辑即可通过 REST API 搜索和过滤数据。
即使您不了解 node.js,也很容易开始使用sails.js。查看SailsCast 视频,看看sails.js 是否适合您。如果您有任何疑问,sails.js 在 Gitter 中有实时社区支持:https://gitter.im/balderdashy/sails
【讨论】:
感谢您的回复,我将看看 Sails.js。我问这个问题的原因是我需要在客户端实现自动完成以实现搜索功能。如果用户输入 'Fest' ,他会实时获取所有包含 'Festival' 的事件。让服务器负责这种实时搜索还是让客户端自己负责是否有意义? sails.js 可以轻松处理这个问题。您可以搜索部分字符串,并返回过滤后的结果。【参考方案2】:这最终是您必须根据投入的时间量和服务器负载要求做出的决定。
将搜索功能留给服务器通常是最简单的解决方案,因为您只需在一个地方处理数据库查找。同样取决于应用程序,您只需要发送一小部分可用数据,而不是所有内容。但是,如果您计划频繁获取大量请求,这可能会耗尽您的服务器资源。
由于您每天只同步一次数据,因此可能值得考虑使用本地数据库方法。这需要更多的思考来实现,因为您需要担心检索新数据、填充本地数据库以及在每个设备上实现搜索。如果您的搜索功能发生变化,用户将需要更新他们的应用程序才能使更改生效。此外,如果您有大量用户,您可能需要考虑错开每日检索,以防止一次对服务器的请求过多。
【讨论】:
我需要在客户端实现自动完成以实现搜索功能。如果用户输入 'Fest' ,他会实时获取所有包含 'Festival' 的事件。现在这可以在服务器/客户端上完成。最初我不会太担心服务器负载,但以后可能会有很多请求涌入服务器。但我正在寻找一个中长期的解决方案。以上是关于搜索 - 本地处理或进行 API 调用? (Android、Node.JS、MongoDB 后端)的主要内容,如果未能解决你的问题,请参考以下文章