从mongoImport json文件登录用户

时间:2015-09-21 18:30:08

标签: javascript json mongodb meteor login

有人使用meteorImport将端口用户的帐号转移到meteor上吗? 我有一个充满用户数据的json文件。它是一个非常直接的数据结构,可以很好地导入我的Meteor.users集合,但在运行自动发布时,然后记录用户数据,它似乎就消失了。

如果我在mongodb终端中运行db.users.find(),数据似乎就在那里。

我已经读过meteor默认提供一些字段(用户名,电子邮件,个人资料)。所以我已经将这些添加到我的json文件中了,我唯一可以使用Meteor.users.find().fetch()登录客户端的是_Id

returned from .find().fetch()

如果我尝试使用电子邮件和密码登录(它已被编码),则表示找不到该用户。

Template.manage.events({
    "click #submitLogin" : function(e, t){
      e.preventDefault();

      //http://blog.benmcmahen.com/post/41741539120/building-a-customized-accounts-ui-for-meteor

      var email = t.find("#username").value;
      var password = t.find("#password").value;

      //By default the server publishes username, emails,
      //and profile (writable by user).

      Meteor.loginWithPassword(email, password, function(err){
        if(err){

          alert(err);

        }else{
          alert("YOU ARE NOW LOGGED IN");
          Router.go("postLogin/teamMembersTable");
        }

      });
      return false;
    },
    "click #forgotPW": function(err){
      alert("CLICK ENCOUNTERED ON FORGOT PW" + err);
    }

您认为我在记录用户时出错了什么导致我收到用户未找到错误?最重要的是......我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

默认情况下,我认为Meteor只发布'个人资料'密钥数据,除非您自己专门发布用户,在这种情况下,它会发布所有内容,这也不是您想要的。

所以你需要发布 在服务器上:

Meteor.publish('users', function() {
    return Meteor.users.find({},{fields: {name:1, email:1 ...<-- the fields you want to publish here  }});
}) 

并在客户端

Meteor.subscribe('users');

您还需要权限规则来阻止前端修改您的收藏:

Meteor.users.deny(
    {
        update: function () { return true; },
        remove: function () { return true; }
    }
);