Как использовать как «включить», так и «атрибуты» в инструкции «findByPk» в последовательности?

#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. Большое вам спасибо