Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 流星:不同的收藏,不同的数据库_Meteor - Fatal编程技术网

Meteor 流星:不同的收藏,不同的数据库

Meteor 流星:不同的收藏,不同的数据库,meteor,Meteor,我的网站将有两种类型的用户:客户和管理员。他们都需要账户。对于帐户,内置的meteor帐户系统利用用户集合。有没有办法将这两种类型的用户分成不同的集合(例如,客户和管理员),而不是将它们全部放在一个集合中?我可能还希望将这些类型的用户放在单独的数据库中(在不同的服务器上):一个数据库用于客户,另一个数据库用于管理员。那么,如何告诉Meteor哪个数据库用于哪个集合 这是一个电子商务类型的网站。有谁能告诉我为什么一个集合对客户和管理员都更好?创建网上商店时,使用一个集合而不是两个集合的优缺点是什么

我的网站将有两种类型的用户:客户和管理员。他们都需要账户。对于帐户,内置的meteor帐户系统利用
用户
集合。有没有办法将这两种类型的用户分成不同的集合(例如,
客户
管理员
),而不是将它们全部放在一个集合中?我可能还希望将这些类型的用户放在单独的数据库中(在不同的服务器上):一个数据库用于
客户
,另一个数据库用于
管理员
。那么,如何告诉Meteor哪个数据库用于哪个集合


这是一个电子商务类型的网站。有谁能告诉我为什么一个集合对客户和管理员都更好?创建网上商店时,使用一个集合而不是两个集合的优缺点是什么?

您可能需要尝试使用roles软件包


您不需要分离集合,只需为不同的用户分配不同的角色。

为什么不将meteor拆分为两个实例,一个用于客户端,另一个用于管理界面。就我个人而言,我会使用角色,但如果这是你的偏好,那也没什么错:

您的管理meteor客户端js代码

OtherMeteor = Meteor.connect("http://other_meteor_url")

//get user with username "admin"/connect to a custom method
OtherMeteor.call("getuser",{username:admin}, function(err,result) {
    console.log("result")
})
或者您可以直接附加到另一个meteor实例上的集合

remote_meteor = Meteor.connect("http://other_meteor_url");
users2 = new Meteor.Collection("users", {manager: remote_meteor})

//wait for the subscription to finish first then use:
console.log(users2.find().fetch())
users2.up
另一个meteor中具有自定义功能的代码:

服务器js:

Meteor.methods({
    'getuser':function(query) {
        return Meteor.users.find(query).fetch();
    },
    'updateuser':function(query,modifier) {
        return Meteor.users.update(query,modifier);
    }
})

当然,您也可以使用用户类型来分隔它们,并使用查询来确保为每个对象都获得一个用户类型。但我认为在这种情况下,最好将它们分开。因为它们的类型太不同,在网站中的角色非常不同,并且每个都将使用不同的面板,我认为对它们来说分开收集更有意义。不一定,使用2个集合不会比使用发布功能来确保非用户、用户和管理员都能看到集合的不同集合更安全。这与安全无关。这只是一种设计观点。是的,作为一种解决办法,它可以做到,但不是我想要的。管理员的角色-是的,但将管理员与客户混合在一起闻起来是一种糟糕的设计。为什么这是糟糕的设计?我个人认为,为不同的用户保留几个收藏,这听起来像是糟糕的设计。哦,Wordpress做到了。这不仅仅是不同的用户,而是两个不同的世界,所以我想把他们作为一个整体来对待。我说的是一个电子商务类型的网站。像WordPress这样的博客软件,读者最终可以成为管理员,这对数据库模式来说绝对是一件好事。但网络商店是另一头野兽。买家永远不会成为管理员,因为它与同一用户类型不同,但拥有额外的权限(即可以阅读博客文章并对其进行编辑)。如果您看到我在一个应用程序上直接附加到用户集合的第二个示例:
Meteor.publish'shared',->Meteor.users.find({})
,您可以。另一方面:
shared=newmeteor.Collection'shared',{manager:conn}
,然后
conn.subscribe'shared'
。然后
console.log shared.find({}).count()为0。是否正在等待订阅完成?是否还有一个名为“shared”的集合?它应该是Meteor的用户。收藏“共享”应该是Meteor。收藏“用户”我不能以
users
的名称创建收藏,因为Meteor的核心已经在使用它。