关系如何在MeteorJS / Mongodb中发挥作用?

时间:2017-05-17 01:44:55

标签: mongodb meteor

我不确定在文档中哪处可以找到它。如何向User对象添加更多对象?

例如,如果我运行

meteor add accounts

我获得了一个包含工作用户登录/注册模板的完整用户集合。我想在此用户集合中添加一个帖子集合/对象,以便用户只能查看自己的帖子。

那么如何将每个帖子添加到当前用户对象?

3 个答案:

答案 0 :(得分:2)

您可以通过添加accounts-password包将用户添加到Meteor.users集合中。使用Accounts.createUser()方法创建新用户。

在此处查找文档:https://docs.meteor.com/api/passwords.html#Accounts-createUser

答案 1 :(得分:1)

Meteor.users是Meteor中用户收集的句柄。你可以像任何其他收藏品一样使用它AKA

Meteor.users.findOne(id) 
or 
Meteor.users.update(...)

当然,您无法将帖子集合添加到用户集合中。这些将是不同的集合。

在用户集合文档下存储MongoDB中的对象非常简单:

Meteor.users.update(
    { _id: userId }, 
    { $set: { objectFieldName: { a: 1, b: 2 }}}
)

或者,如果您需要在用户创建时执行此操作,则应使用Accounts package hooks

答案 2 :(得分:0)

你接近错了。使用pub / subs来实现这一目标。

插入帖子时,请使用名为userId或ownerId

的字段
//inside Meteor.methods() on server side
Posts.insert({
    owner: Meteor.userId(),
    //some other fields
});

然后在您的出版物中,仅返回用户拥有的帖子

//publication on server side
//checks if the visitor is a user
//if user, returns that user's posts
Meteor.publish('posts', function() {
    if (this.userId) {
        return Posts.find({owner: this.userId})
    }
});

然后订阅该出版物。无需参数:

//client side
Meteor.subscribe('posts')