Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
Javascript 如何显示此集合?_Javascript_Meteor_User Profile - Fatal编程技术网

Javascript 如何显示此集合?

Javascript 如何显示此集合?,javascript,meteor,user-profile,Javascript,Meteor,User Profile,我试图使个人资料页,我需要显示一个模板的个人资料名称和生物。问题是我无法获取每个配置文件对象的Id。如果我能得到每个配置文件的Id,就像它是如何在postId中完成的一样。下面的代码是我认为它可以工作的方式,但没有。如果你告诉我如何获得身份证,那就太好了,谢谢 Profile = new Meteor.Collection('profile'); Profile.allow({ update: ownsDocument }) Profile.deny({ update: func

我试图使个人资料页,我需要显示一个模板的个人资料名称和生物。问题是我无法获取每个配置文件对象的Id。如果我能得到每个配置文件的Id,就像它是如何在postId中完成的一样。下面的代码是我认为它可以工作的方式,但没有。如果你告诉我如何获得身份证,那就太好了,谢谢

Profile = new Meteor.Collection('profile');

Profile.allow({
    update: ownsDocument
})

Profile.deny({
  update: function(profileId, profile, fieldNames) {
    return (_.without(fieldNames, 'bio').length > 0);
  }
});


Accounts.onCreateUser(function(options, user){
    Meteor.methods({
        profile: function(postAttributes) {
    var user = Meteor.user();
    var profile = _.extend(_.pick(options.profile, 'bio'), {
        userId: user._id, 
        profilename: user.username, 
        submitted: new Date().getTime(),
        postsCount: 0, posts : []
    });


    var profileId = Profile.insert(profile);

    return profileId;
    }

   });
    return user;
});

在discover meteor示例中,他们使用一种方法插入一个
Post
,然后返回其id。在您的情况下,一个新的
配置文件正在异步回调中插入,因此您无法返回id。但是,您知道
用户id
,因此可以使用它来获取配置文件

服务器

Accounts.onCreateUser(function(options, user){

    var user = Meteor.user();
    var profile = _.extend(_.pick(options.profile, 'bio'), {
        userId: user._id, 
        profilename: user.username, 
        submitted: new Date().getTime(),
        postsCount: 0,
        posts : []
    });

    Profile.insert(profile);

    return user;
});
客户端

Template.profile.profile = function () {
  return Profiles.findOne({userId: Meteor.userId()});
};

你似乎对一些流星的想法有点困惑

首先,Meteor.methods({…})是可以使用Meteor.call({})在客户端调用的函数

它们应该出现在顶层,而不是Accounts.onCreateUser等其他函数中

对于这个用例,我不明白为什么您需要一个方法。您所要做的就是检索将存储在数据中的数据,这些数据无论如何都会发送到客户端

如果您使用accounts base软件包,那么您将自动获得Meteor.users集合,这对于您想要做的事情来说是很好的。我认为没有必要收集个人资料

下面是一个流星板来说明这一点:

注:我将bio存储在用户的配置文件部分。这是因为默认情况下,用户可以编辑自己的配置文件部分,所以我可以在客户端执行Meteor.users.update(…)


这只是一个例子来展示一些概念。它确实有不好的做法。首先,我建议添加PackageAccounts ui并使用{{>loginButtons}}助手。它提供了错误检查等功能。我之所以没有使用它,是因为我想展示如何允许用户在创建帐户之前输入他们的个人简历,以及如何在帐户中使用。onCreateUser。

您是否可以在源代码示例中添加一些缩进?没有它,很难阅读。另外,为什么要在
onCreateUser
回调中定义
post
方法?我相信这应该在全球范围内进行。好的,谢谢,我会尝试一下,现在就纠正输入错误,我的代码中的配置文件刚刚看起来我一定是打错了,我需要在创建新帐户时为每个用户创建一个配置文件。明白,但是这不是Meteor.methods
的设计目的。好吧,这只是我最常尝试的方法之一,没有包括Meteor.methods。任何帮助都很好,我对Meteor很陌生。从理论上讲,你将如何创造这一点。谢谢你帮我谢谢你帮了我唯一得不到的就是