Meteor - 将设置数组插入用户配置文件不起作用

时间:2015-09-12 23:59:32

标签: meteor meteor-accounts

我正在使用默认的User Accounts Meteor软件包并尝试为每个用户实施基本设置。由于User Accounts包附带了一个配置文件字段,我认为这是插入一个数组来保存该特定用户设置的最佳位置。

这是我使用的代码。

 var profile  = 
 {
 settings:
   [{
     id_: new Meteor.Collection.ObjectID(),
     rule_id: "name1",
     turned_on: false,
     date_created: new Date(),
     date_updated:new Date()
   },
   {
     id_: new Meteor.Collection.ObjectID(),
     rule_id: "name2",
     turned_on: false,
     date_created: new Date(),
     date_updated:new Date()
   }
  ]};
Accounts.createUser({username: email, email: email, password: password, profile: profile }, //callback etc etc.. 

我在Accounts.createUser的调用中没有错误,但是当我在控制台中打印用户时 - >配置文件字段为空:"配置文件" :{}

P.S。现在安装了不安全和自动发布。

我认为我在这里看起来很容易。任何帮助表示赞赏! 谢谢 :) 亚历克斯

3 个答案:

答案 0 :(得分:0)

过早地问这个问题:/能够搞清楚! :)

虽然我仍然无法通过Accounts.createUser()方法插入配置文件信息,但这是我解决它的方式。

1.call Accounts.createUser(etc etc)

2.inside回调函数,使用Meteor.userId()获取当前用户ID;即var userId = Meteor.userId();

3.call Meteor.users.update({_ id:userId},{$ set:{profile:profile}})//使用原始问题中提到的配置文件数组。

我真诚地希望这将有助于将来的某个人! 亚历

答案 1 :(得分:0)

您还可以使用Accounts.onCreateUser修改用户的个人资料。这是一个非常标准的模式。

Accounts.onCreateUser(function(options, user){
  user.profile = {
    settings:
     [{
       id_: Random.id(),
       rule_id: "name1",
       turned_on: false,
       date_created: new Date(),
       date_updated: new Date()
     },
     {
       id_: Random.id(),
       rule_id: "name2",
       turned_on: false,
       date_created: new Date(),
       date_updated: new Date()
     }
    ]};
  return user;
});

此处使用Random.id()代替new Meteor.Collection.ObjectID()

答案 2 :(得分:0)

您的原始代码似乎适用于this Meteorpad。你在做什么不同?

要检查的事项:

  1. 帐户密码包已安装?
  2. 用户名/电子邮件是唯一的?
  3. Accounts.createUser()回调未传递错误?