Node.js 限制mongodb中的facebook好友访问文档

Node.js 限制mongodb中的facebook好友访问文档,node.js,facebook,mongodb,facebook-graph-api,mongoose,Node.js,Facebook,Mongodb,Facebook Graph Api,Mongoose,我正在使用mongodb mongoose构建一个简单的照片存储应用程序,它有三个资源: 使用者 相册 照片 所有身份验证都由passportjs处理 通过使用,用户可以拥有许多相册,并且相册可以拥有许多照片 每个相册都有不同的隐私设置: 私有-只有创建的用户才能看到它 公共-任何人都可以看到它 朋友-只有facebook上的朋友才能看到它 当我对许多相册进行查询时,我希望根据登录的用户看到3张相册的混合,但我的问题是,我应该如何检查登录的用户是否是创建者的facebook朋友 Face

我正在使用mongodb mongoose构建一个简单的照片存储应用程序,它有三个资源:

  • 使用者
  • 相册
  • 照片
所有身份验证都由passportjs处理

通过使用,用户可以拥有许多相册,并且相册可以拥有许多照片

每个相册都有不同的隐私设置:

  • 私有-只有创建的用户才能看到它
  • 公共-任何人都可以看到它
  • 朋友-只有facebook上的朋友才能看到它
当我对许多相册进行查询时,我希望根据登录的用户看到3张相册的混合,但我的问题是,我应该如何检查登录的用户是否是创建者的facebook朋友

Facebook提供了一个检查两个用户是否是朋友的工具,但这意味着要遍历一个集合,对每个集合提出请求,过滤结果,然后最终返回,这对我来说似乎是一项艰巨的工作

另一种方法(仍然没有缺陷):

  • 用户注册并允许应用获取已经使用该应用的朋友
  • 将这些好友id存储在用户的数组中
  • 当用户创建相册时,将此阵列的副本保存到相册上的字段中
  • 使用登录用户ID使用$in运算符进行查询
  • 优点:

    • 列表项
    • 快速检查用户是否是创建相册的用户的朋友
    • 无需向facebook发送其他请求
    缺点:

    • 好友列表只设置一次,所以如果好友列表发生更改,则需要以某种方式进行更新

    • 朋友列表位于多个位置(在用户和相册的x数量上),因此需要以某种方式更新所有这些位置

    • 当一个新朋友注册时,应用程序中可能已经有朋友,我们需要找到其中的每个朋友,将新朋友添加到他们的朋友列表中,并在需要时删除

    这些是我能想到的唯一方法,有人能提供新的方法或改进上述方法吗?也许我完全错误地看待这一点,有一个非常简单的解决方案使用其他mongo功能?

    您可以使用
    me/friends
    边缘来接收所有朋友(也授权了您的应用程序)来创建您自己的列表。然后,您可以使用订阅
    User.friends
    edge上的更改。当这种情况发生时,您可以更新您的好友列表,以便您的版本始终是最新的。

    有趣的是,我没有想到web挂钩。我想我会采取一种不同的方法,自己管理朋友,这样用户就可以选择而不仅仅是允许所有朋友。