首页 > 解决方案 > 在 Meteorjs 中显示最新创建的用户和角色时的 Pub-Sub 问题

问题描述

我正在使用以下流星方法创建一个新用户:

Meteor.methods({
"users.add": function(newUser) {
let cResult = Accounts.createUser({
username: newUser.username,
email: newUser.email
password: newUser.password,
profile: {
first_name: newUser.first_name,
last_name: newUser.last_name,
clinic: newUser.clinic
}
});
for (var index in newUser.roles) {
Roles.addUsersToRoles(cResult, newUser.roles[index].label);
}
return true;
},
"users.addRole": function(userId, newRole) {
Roles.addUsersToRoles(userId, newRole);
return true;
}
});

以及下面的代码来订阅 mongo 集合:

export default withTracker(() => {
let usersSubscription = Meteor.subscribe("allUsers");
let rolesSubscriptioin = Meteor.subscribe("allRoles");
const eachReady = usersSubscription.ready() && 
                  rolesSubscriptioin.ready();
const loading = usersSubscription ? !eachReady : true; 
return {
loading,
users: Meteor.users.find().fetch(),
roles: Meteor.roles.find().fetch()
};
})(Users);

我正在使用反应来呈现信息。当我创建一个新用户时,除了角色信息之外,我可以获得新创建的用户。导致反应组件中的“地图未定义”错误。

组件名称是用户,存储库位于此链接

我是新来的流星任何帮助都是好的。

标签: reactjsmeteor

解决方案


在尝试了多种解决方案(如 getDerviedStateFromProps 生命周期方法和其他所有方法)后,我在渲染时对未定义状态进行了简单检查,从而解决了问题,而无需进入任何生命周期方法。这可能是不正确的,所以仍然愿意接受建议。


推荐阅读