/ / Зберігання даних користувача в Meteor - метеор, моделювання даних

Зберігання даних користувача в Meteor - метеор, моделювання даних

Я хочу зберегти інформацію для кожного входукористувач у моєму метеорному додатку, наприклад, його зображення профілю, біо, ect. Але якщо я намагаюся зробити щось на зразок Meteor.user (). PicLink = "..."; він видаляється при кожному наступному виклику Meteor.user (). Я вважаю, що це означає, що я не повинен зберігати додаткові дані безпосередньо на об'єкті користувача, як це.

Єдиний відповідь на те, що я можу придумати, це мати окрему колекцію з даними користувача. Але це здається, що було б важко підтримувати Meteor.users. Чи є кращий спосіб?

Відповіді:

7 для відповіді № 1

Усі облікові записи користувачів постачаються з автоматично опублікованими profile поле, яке можна оновлювати таким чином:

var userId = Meteor.userId();
var url = "http://example.com/kittens.jpg";
Meteor.users.update(userId, {$set: {"profile.photo": url});

Це оновить базову базу даних і зберігатиметься через з'єднання.

Як я вказую тут Ви повинні знати, що об'єкт профілю в даний час можна редагувати за умовчанням, навіть коли insecure пакет було видалено. Це означає, що будь-який користувач може відкрити консоль і змінити свій профіль.

Кращий підхід полягає в забороні оновлень і використанні способу:

клієнт

var url = "http://example.com/kittens.jpg";
Meteor.call("update.photo", url);

сервер

Meteor.users.deny({
update: function() {return true;}
});

Meteor.methods({
"update.photo": function(url) {
check(url, String);
Meteor.users.update(this.userId, {$set: {"profile.photo": url}});
}
});