所以我有Channel
模型和Subscriber
模型。
频道具有一个属性,该属性包含与已注册的订户相对应的ID数组。
我一直坐在这里,用async
:把我的头骨撞在墙上
- 获取通道列表,然后在回调结束时
- 从该频道获取订阅者ID列表,然后在回调结束时
- 再次使用
async
,对于每个订户ID,运行mongoDB查询以获取用户配置文件并修改频道的初始列表
这似乎大错特错。Subscriber
是否应作为嵌入文档在频道内直播?如果是这样的话,当用户需要登录时,我是否必须在所有频道及其所有嵌入文档中进行搜索?
如果我想将它们单独维护,就像我想对用户、投标人和其他我认为不应该作为嵌入文档的实体所做的那样,该怎么办?
附言:我不想使用Mongoose。
有没有更简单的方法?
提前谢谢。
对于这种特殊情况,您可以执行$in查询。您有一个给定频道的subscriberID数组,因此您对subscriber/users集合执行$in查询。
db.subscribers.find({userID:{$in: IDsArray}})
但一般来说,使用Mongo,您将不得不通过应用程序层手动进行这些类型的连接。如果你不打算在其他地方起诉他们,你也可以将订阅者嵌入到频道文档中。或者,您可以切换到关系数据库,如Postgres。
希望这能有所帮助,它应该不必遍历所有的订阅服务器ID并在每个ID上查找。