#node.js #postgresql #express #orm #sequelize.js
Вопрос:
Как использовать как «включить», так и «атрибуты» в инструкции «findByPk» в последовательности. Это мой код:
exports.findOne = (req, res) =gt; { var id = req.params.id; User.findByPk(id, { include: ["roles"] }, { attributes: { exclude: ['password'] } } ) .then(data =gt; { res.send({"data": data, "resultCode": 1, "message": ""}); }) .catch(err =gt; { res.status(500).send({ message: err.message || "Some error occurred while retrieving users." }); });; }
Но это работает только тогда, когда я использую только 1 из 2. Если я просто использую: attributes: { exclude: ['password']}
результат будет следующим:
{ "data": { "id": 1, "username": "admin", "email": "admin@gmail.com", "createdAt": "2021-09-27T04:22:56.660Z", "updatedAt": "2021-09-27T04:22:56.660Z" }, "resultCode": 1, "message": "" }
Если я просто использую: {include: ["roles"]}
таким образом, результат будет следующим
{ "data": { "id": 1, "username": "admin", "email": "admin@gmail.com", "password": "$2a$08$m54ioIwzpZRVC9/HqkHyqezOornjmvT9pDEJcOhHbNcSmLOfw3Sg.", "createdAt": "2021-09-27T04:22:56.660Z", "updatedAt": "2021-09-27T04:22:56.660Z", "roles": [ { "id": 2, "name": "moderator", "createdAt": "2021-09-27T04:20:46.956Z", "updatedAt": "2021-09-27T04:20:46.956Z", "user_roles": { "createdAt": "2021-09-27T04:22:56.791Z", "updatedAt": "2021-09-27T04:22:56.791Z", "roleId": 2, "userId": 1 } }, { "id": 3, "name": "admin", "createdAt": "2021-09-27T04:20:46.956Z", "updatedAt": "2021-09-27T04:20:46.956Z", "user_roles": { "createdAt": "2021-09-27T04:22:56.791Z", "updatedAt": "2021-09-27T04:22:56.791Z", "roleId": 3, "userId": 1 } } ] }, "resultCode": 1, "message": "" }
Как использовать и то, и другое в моем коде? Потому что я не хочу показывать поле «пароль» в своем результате, но я хочу показать роли пользователя в своем результате. Как это сделать. Спасибо вам заранее
Ответ №1:
Параметры должны быть в 1 объекте, подобном этому.
User.findByPk(id, { include: ["roles"], attributes: { exclude: ['password'] } })
Комментарии:
1. Большое вам спасибо