Nodejs:简单缩放

时间:2016-07-25 04:25:05

标签: node.js mongodb

这是一个有点理论上的问题,可以帮助我更好地理解事物。

我有一个页面,允许人们将信息更新为mongodb,如下所示:

 {name: john}
 {address: home}
 {email: john@johnsfamily.com}

我有一个脚本,允许家庭中的其他人添加他们的详细信息:

 {name: sarah}
 {address: home}
 {email: sarah@johnsfamily.com}

然后我希望任何人都可以通过电子邮件:xxx@johnsfamily.com访问数据库。

我的问题是,缩放这个的最佳方法是什么,允许许多家庭使用该设施存储和查看他们的家庭信息,而其他人也没有看到它?

我一直在使用mongo find功能,只允许用户访问具有相同电子邮件域的文档,但我想知道这是否构成良好的做法?

这是小规模多用户设置的推荐做法吗?我正在寻找一个相当安全但简单的解决方案。

感谢您的建议!

2 个答案:

答案 0 :(得分:0)

你可以做一件事,创建一个主模式,你可以在其中创建一个模式来存储家庭(或相关人员)的头部细节,以及家庭模式,对于每个家庭成员的详细信息,您可以存储主人的ID及其数据,这样您就可以在主帐户和其他帐户之间建立链接。如果您要搜索与主帐户关联的所有家庭成员,只需传递 db.collection.find({master: masterId}, function(err, data){}); 即可。我认为这是一种更好的方法,就像你使用电子邮件一样,传递字符串对于DB来说会有点代价。基本上使用 objectId 会使查询工作比字符串更快。

这是一种更安全,更快捷的方法。

答案 1 :(得分:0)

似乎相当有限地假设一个家庭的所有成员都拥有唯一的电子邮件域并且所有成员都使用相同的域。例如,我们的家庭在三个不同的域上有四个不同的电子邮件帐户,其中两个域不是自定义域(如gmail.com和yahoo.com)。

我认为可能更好的做法是让第一个成立一个家庭成为管理员"对于该家庭,他们可以添加他们希望能够为此特定数据集做出贡献的其他人(可能是他们的家庭)的电子邮件地址。

所以,每个"帐户"将有一个主管理员,然后是一个允许为该帐户提供资金的其他用户的列表。在数据库中有几种不同的方法来构建它。