更改“状态”默认属性名称

时间:2018-07-19 09:53:11

标签: authentication meteor angular-meteor

我刚刚尝试了一个名为“ meteor-user-status”的好程序包

来自https://github.com/mizzao/meteor-user-status

我的默认“状态”属性存在一些问题

我可以更改默认的“状态”属性名称吗?

"status" : {
    "online" : false,
    "lastLogin" : {
        "date" : ISODate("2018-07-19T16:26:02.326+07:00"),
        "ipAddr" : "127.0.0.1",
        "userAgent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
    }
}

当我创建用户播种器时,它被替换了。像这样:

if (Meteor.users.find().count() === 0) {
 var i = 0;
 for (i = 0; i<users.length ; i++) {
  Accounts.createUser({
    username: users[i].username,
    email: users[i].emails[0].address,
    password: 'secret',
    profile : users[i].profile
  });

  Meteor.users.update({ "emails.0.verified": false }, {
    $set: {"emails.0.verified" :true, status: 'a', roles: users[i].roles}
  });
}

}

因为我的“状态:a”是为了让用户可以登录到应用程序

非常感谢

1 个答案:

答案 0 :(得分:1)

为了回复您您实际上无法重构字段,仍然有一些选项可供您选择。

其他软件包

还有其他处理用户状态的状态包。也许他们使用与用户上使用status不同的信息存储方式。

请参见https://atmospherejs.com/?q=user-presence

部分重构

这将是两个结构的合并。您使用的包会在状态上保存一个对象。

因此重构可能来自

status: 'a'status: { a: true } where a`不会与其他状态字段发生冲突,只要它的名称与其他所有状态字段都不同即可。

也许您可以说服建筑师考虑此选项。

分叉并自定义包装

您可以派生包并对其进行本地复制。如果您的本地软件包版本高于大气版本,则流星将在未指定版本的情况下优先使用本地软件包。

在您的本地软件包中,您现在可以使用与status不同的字段名称。

如果您找到一种在保持字段向后兼容性的同时自定义字段名称的方法,您甚至可以创建一个GitHub的pull请求,从而改进软件包,以免其他人遇到同样的麻烦。