Работа с пользователями с помощью приложения MongoDB Stitch в кластере Atlas - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть приложение MongoDB Stitch, которое использует аутентификацию по электронной почте / паролю.Это создает пользователей в приложении Stitch, которые я могу аутентифицировать на странице.У меня также есть MongoDB Atlas Cluster для моей базы данных.В кластере у меня есть БД с именем проекта, а затем коллекция под "Matches".Поэтому, когда я вставляю «Совпадения» в коллекцию, я могу отправить аутентифицированный идентификатор пользователя из Stitch, чтобы у меня был способ запрашивать все совпадения для конкретного пользователя.Но как я могу добавить дополнительные значения в коллекцию 'User' в stitch?Этот пользовательский раздел как бы упакован в Stitch с любым типом аутентификации, который вы выберете (электронная почта / пароль).Но для моего приложения я хочу иметь возможность хранить что-то вроде поля «MatchesWon» или «GamePreference» в коллекции «User».

Должен ли я создать коллекцию для 'Users' так же, как я сделал для 'Matches' в своем кластере, и просто вставить идентификатор пользователя, который предоставляется из Stitch, и обработать поля в этой коллекции?Похоже, я бы дублировал данные пользователя, но я не уверен, что понимаю другой способ сделать это.Все еще учусь, я ценю любые отзывы / советы.

1 Ответ

0 голосов
/ 22 февраля 2019

В настоящее время нет способа хранить ваши собственные данные на внутренних пользовательских объектах.Вместо этого вы можете использовать триггеры аутентификации для управления пользователями.Следующий фрагмент взят из этих документов .

exports = function(authEvent){
   // Only run if this event is for a newly created user.
   if (authEvent.operationType !== "CREATE") { return }

   // Get the internal `user` document
   const { user } = authEvent;

   const users = context.services.get("mongodb-atlas")
       .db("myApplication")
       .collection("users");

   const isLinkedUser = user.identities.length > 1;

   if (isLinkedUser) {
        const { identities } = user;
        return users.updateOne(
            { id: user.id },
            { $set: { identities } }
        )

    } else {
        return users.insertOne({ _id: user.id, ...user })
             .catch(console.error)
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...