Я использую Meteor для создания веб-приложения вопрос-ответ. Я хочу, чтобы пользователи загружали свои изображения. Однако у меня возникли проблемы с пониманием GridFS, поэтому я избегаю этого. Чтобы преодолеть это, я создаю профиль для каждого пользователя, который хранит их description, name и 'image_url' для изображения своего профиля, то есть я прошу пользователей предоставить URL-адрес своего изображения, которое помещается в img src для отображения изображения профиля. На локальном сервере он работает нормально, и изображение каждого отображается пользователь.
Вот common.js.
Я оставил пустыми поля src и другие поля, которые можно заполнить на странице создания профиля.
Template.register.events({
'submit form': function(event){
event.preventDefault();
var username = event.target.username.value;
var password = event.target.password.value;
Accounts.createUser({
username: username,
password: password,
}, function(error){
if(error){
alert(error.reason);
event.target.password.value=''; // Output error if registration fails
} else {
Profile.insert({
name:'',
hobbies:'',
description:'',
currentUser:Meteor.userId(),
src:'',
followers:0,
following:0,
followedBy:[],
followingTo:[]
});
Router.go("createProfile"); // Redirect user if registration succeeds
}
});
После этого пользователь направляется на страницу создания профиля, где его / ее спрашивают о его / ее описании и URL-адресе изображения профиля, а профиль пользователя в базе данных обновляется.
Template.createProfile.events({
'click button':function(event){
event.preventDefault();
var name=document.getElementById('name').value;
var hobbies=document.getElementById('hobbies').value;
var description=document.getElementById('description').value;
var src=document.getElementById('src').value;
var currentUser=Meteor.userId();
Profile.update({ _id: this._id },{$set:{name:name}});
Profile.update({ _id: this._id },{$set:{hobbies:hobbies}});
Profile.update({ _id: this._id },{$set:{description:description}});
Profile.update({ _id: this._id },{$set:{src:src}});
Router.go('posts');
}
});
Вот router.js
Router.route('/createProfile', {
template: 'createProfile',
name:'createProfile',
data: function(){
return Profile.findOne({ currentUser: Meteor.userId() });
}
});
Router.route('/users'); //used helpers profile helper to display the list of every user with their links to profile page
Router.route('/user/:_id', {
template: 'profilePage',
name:'profilePage',
data: function(){
var currentProfile = this.params._id;
return Profile.findOne({ _id: currentProfile });
}
});
Вот HTML
<template name='users'>//users is displaying the links to every user profile
<div class='container'>
{{#each profile}}
<div class='col-lg-6'>
<a href="{{pathFor route='profilePage'}}"><h3>{{name}}</h3>
<img src='{{src}}' class='img-responsive img-circle pull-left' height='50' width='50'/></a>
</div>
{{/each}}
</div>
</template>
Это страница профиля каждого пользователя -
<template name='profilePage'>
<h2 class='media-heading'> Profile</h2>
<div class='well'>
<img src='{{src}}' class='img-responsive img-circle pull-left' id='profileImage' height='50' width='50'/>
Name:{{name}}
<br>
Hobbies:{{hobbies}}
<br>
Description:{{description}}
<br>
<a href='{{pathFor route="followers"}}'>Followers:{{followers}}</a>
<br>
<a href='{{pathFor route="following"}}'>Following:{{following}}</a>
<br>
<button id={{followColor}} class='btn btn-default glyphicon glyphicon-eye-open' {{disabled}}>{{followOrfollowing}}</button>
<br>
</div>
<br>
<hr/>
</template>
Здесь {{src}} возвращает image_url, предоставленный пользователем.
Мой вопрос: будет ли этот метод работать, если мое веб-приложение выйдет в сеть, и верен ли этот метод?