更改 'status' 默认 属性 名称

Changing the 'status' default property name

我刚刚尝试了一个很好的包,叫做 "meteor-user-status"

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

我对默认设置有一些问题 'status' 属性

我可以更改默认的 '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}
  });
}

}

因为,我的'status: a'是为了让用户可以登录应用程序

非常感谢

为了回应您无法真正重构您的领域,您还有一些选择。

其他套餐

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

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

部分重构

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

因此重构可以来自

status: 'a'status: { a: true } wherea` 不会与其他状态字段冲突,只要它的名称不同于所有其他状态字段。

或许您可以说服您的架构师考虑此选项。

分叉并自定义包

您可以分叉包并制作它的本地副本。如果你本地的包版本高于大气层的版本,meteor会在没有指定版本的情况下优先使用本地的。

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

如果您找到一种方法来自定义字段名称,同时保持向后兼容,您甚至可以创建一个拉取请求 GitHub,从而改进包,这样其他人就不会遇到同样的麻烦。