【问题标题】:Meteor - Inserting Settings Array into Profile of User is not workingMeteor - 将设置数组插入用户配置文件不起作用
【发布时间】:2015-12-09 06:50:11
【问题描述】:

我正在使用默认的用户帐户 Meteor 包并尝试为每个用户实施基本设置。由于用户帐户包带有一个配置文件字段,我认为这将是插入一个数组来保存该特定用户的设置的理想场所。

这是我使用的代码。

 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 时没有收到任何错误,但是当我在控制台中打印用户时 --> 配置文件字段为空:“profile”:{ }

附:现在安装了不安全和自动发布。

我认为我在这里忽略了一些非常容易的事情。任何帮助表示赞赏! 谢谢 :) 亚历克斯

【问题讨论】:

    标签: meteor meteor-accounts


    【解决方案1】:

    您的原始代码似乎可以在 this Meteorpad 中使用。你做了什么与众不同的事?

    检查事项:

    1. accounts-password 包安装了吗?
    2. 用户名/邮箱是唯一的吗?
    3. Accounts.createUser()回调没有被传递错误?

    【讨论】:

      【解决方案2】:

      您也可以使用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()

      【讨论】:

      • options 对象在哪里以及如何声明?
      • 这是一个传递给Accounts.createUser()的参数,所以你可以在调用者中自己定义它。
      【解决方案3】:

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

      虽然我仍然无法通过 Accounts.createUser() 方法插入个人资料信息,但这是我解决它的方法。

      1.调用 Accounts.createUser(等)

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

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

      我真诚地希望这对将来的人有所帮助! 亚历克斯

      【讨论】:

      • 如果设置是您不希望用户能够编辑的内容,那么它们不应进入配置文件属性。
      • @SirCharlesWatson 这些都将由用户编辑 :) 这就是我选择个人资料字段的原因。
      • 好的!只要确定! :)
      猜你喜欢
      • 1970-01-01
      • 2016-12-18
      • 2016-06-08
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 2018-07-20
      • 2014-06-05
      • 2023-01-30
      相关资源
      最近更新 更多