当您尝试以如下方式从 store 中加载用户时,会收到此通知
api.container.lookup('service:store').find('user', api.getCurrentUser().username).then((user) => {
});
显然,从 store 中水合(hydrate)用户时会访问该用户的时区,从而触发此通知。
我使用上述代码来访问用户的 user_fields,而这些字段在 api.getCurrentUser() 返回的用户对象中并未填充。
是否有其他方法可以在主题或主题组件中获取 user_fields,而无需使用上述代码结构?
我找到了一个绕过此弃用提示的方法,同时仍然可以访问 user_field:
api.getCurrentUser().findDetails().then((user) => { ... });
不过,findDetails 总是会向服务器发送请求。没有任何缓存。一旦调用它,当前用户就会拥有已填充的 user_fields。
因此,你可以像这样优化一下逻辑:
function withUserFields(user, callback) {
if (user.user_fields === undefined) {
user.findDetails().then(callback);
} else {
callback(user);
}
}
withUserFields(api.getCurrentUser(), (user) => {
// 使用 user.user_fields[] 执行某些操作
});