Получение пользовательской коллекции из API / MongoDB, но исключить поле пароля? - PullRequest
0 голосов
/ 01 июля 2018

Я создаю API, который получает статьи. У меня также есть пользователи в моей базе данных, и я хотел бы иметь одну конечную точку, которая возвращает пользователя. /api/users/:userid. Это возвращает что-то вроде этого:

{
"articles": [], //array w. references to articles the user has written
"_id": "5b1321321bcda0e3364251d7e4a", 
"email": "user@email.com",
"password": "$2a$1231241gi14k41k42bk12bh3k127iP/k1LAqwPdbgF/bXXpRia",
"__v": 0
}

- Однако я не уверен, стоит ли возвращать (зашифрованный) пароль в API. Могу ли я как-то исключить это поле, или вы бы порекомендовали хранить электронные письма + user_ids в отдельной коллекции на mongodb, или как обычно обрабатываются такие вещи?

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Хорошо. Не рекомендуется возвращать пользователя password. Обычно я использую библиотеку lodash для таких операций, как, например, например, у вас может быть служебная функция, которая пропускает поле пароля, прежде чем ваш API вернет ответ, подобный этому

function omitPassword(user) { return _.omit(user.toObject(), ['password']); } в основном _.omit это метод от lodash. Надеюсь, это поможет вам.

0 голосов
/ 01 июля 2018

вы можете использовать Project Fields to Return from Query, чтобы исключить поле пароля из вашего ответа.

db.users.find( { email: "user@email.com" }, { password: 0} )
...