我正在尝试使阵列由我的服务器管理并共享给我的客户端。我认为Meteor.methods()将是通过创建getter方法来实现的方法。尽管由于某种原因,它可以打印到服务器正确地控制台,但是当我执行Meteor.call()时,它会向客户端返回未定义的值。无论if是true还是false,我都会得到未定义的返回值,但始终是未定义的。
///server
Meteor.methods({
createNewUser: this.createNewUser,
getRoles: this.getRoles
});
...
getRoles(id) {
console.log(roles);
if (Roles.userIsInRole(id, "admin")) {
return roles;
} else {
return 'blah';
}
}
///client
ngOnInit() {
MeteorObservable.autorun().subscribe(() => {
...
Meteor.call("getRoles", Meteor.userId(), (data) => {
console.log("data", data);
this.roles = data;
console.log("roles", this.roles);
});
console.log("user list", this.userList);
console.log("roles", this.roles);
....
});
Meteor.methods()中的另一种方法可以完美地工作,我似乎无法弄清为什么这个方法看不到它的原因,因为它的处理量要少得多。
///output
demo.component.ts:53 user list []
demo.component.ts:54 roles []
demo.component.ts:53 user list [Object]
demo.component.ts:54 roles []
demo.component.ts:48 data undefined
demo.component.ts:50 roles undefined
demo.component.ts:48 data undefined
demo.component.ts:50 roles undefined
demo.component.ts:53 user list [Object, Object, Object, Object, Object, Object]
demo.component.ts:54 roles undefined
demo.component.ts:48 data undefined
demo.component.ts:50 roles undefined
谢谢你的帮助。
原来我的问题出在Method.call()
它返回错误和结果,而不是单个对象。
///client
Meteor.call("getRoles", Meteor.userId(), (error, data) => {
if (!error) {
console.log("data", data);
this.roles = data;
console.log("roles", this.roles);
} else {
console.log("error: ", error);
}
});
///output
demo.component.ts:57 user list []
demo.component.ts:58 roles []
demo.component.ts:57 user list [Object]
demo.component.ts:58 roles []
demo.component.ts:49 data ["admin","spectator","coach","player"]
demo.component.ts:51 roles ["admin","spectator","coach","player"]
demo.component.ts:49 data ["admin","spectator","coach","player"]
demo.component.ts:51 roles ["admin","spectator","coach","player"]
demo.component.ts:57 user list [Object, Object, Object, Object, Object, Object]
demo.component.ts:58 roles ["admin","spectator","coach","player"]
demo.component.ts:49 data ["admin","spectator","coach","player"]
demo.component.ts:51 roles ["admin","spectator","coach","player"]
这就是我的期望(尽管不确定为什么MeteorObservable会被触发多次)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句