У меня есть пользователи, которые либо загружают свое изображение, либо, если нет, используется граватар.
В первоначальном плане все работает ок. Изображение Gravatar отображается, когда нет загруженных изображений. Я сохранил URL-адрес загруженных изображений (облачный) в поле профиля, profilepicId.
опубликовать
Meteor.publish('allUsers', function() {
return Meteor.users.find( {}, {
fields: { username: 1, profileImg: 1, emails: 1, md5hash: 1, profile: 1 }
});
});
Ниже представлена структура пользователя (исходный рабочий код):
username,
emails,
password,
profile : { profilepicId: {} }
Регистрация нового пользователя (оригинальный рабочий код):
Accounts.createUser({ //thats all I can add based on docs
username : usernameVar,
email : emailVar,
password : passwordVar,
profile : { }
//and then to extend the user fields
Accounts.onCreateUser(function(options, user) {
if(options.profile) {
user.profile = options.profile || {};
}
user.md5hash = Gravatar.hash(user.emails[0].address);
return user;
});
Затем в html показать изображение:
{{#if profile.profilepicId}}
<a href="{{pathFor 'upload'}}" class="link">
<img src="{{c.url profile.profilepicId format=format gravity='faces' mode='thumb' crop='thumb' width=60 height=60}}">
</a>
{{else}}
<!-- the uploaded image -->
{{/if}}
И изменения.... Итак, теперь вместо сохранения загруженного изображения в profile: { profilepicId : {}}
я сохраняю его вне поля profile
. Я не удалял профиль по умолчанию в пользовательской структуре Meteor.
username,
emails,
password,
profileImg :{ social : {} , uploaded: {}}
И изменения отражаются в Accounts.OnCreateUser:
Accounts.onCreateUser(function(options, user) {
user.profileImg = { social : {}, uploaded: {} }
user.md5hash = Gravatar.hash(user.emails[0].address);
return user;
});
HTML-код загруженных изображений также изменится с profile.profilepicId
на profileImg.uploaded
. Однако это не имеет значения, поскольку граватар, который не отображается, не требует строки для загрузки html.
Это все изменения, которые я сделал. Нет изменений для публикации тоже. В журнале консоли нет сообщений об ошибках, и я сузил отсутствующий граватар до этого изменения структуры пользователя. Может ли кто-нибудь объяснить мне, почему это так?
profileImg.uploaded
кажется всегда истинным. - person MasterAM   schedule 13.05.2017{{#if profileImg.uploaded}}
, что, судя по всему, верно. - person MasterAM   schedule 13.05.2017{{#if }}
возвращает true, только если я что-то загрузил в поле. Поэтому, если загрузки нет, он возвращает false и вместо этого показывает gravatar. Во всяком случае, эта часть работает правильно. Без вопросов. Проблема в том, что граватар не появляется и показывает пустое место. - person Thinkerer   schedule 13.05.2017