используя замены с sequelize.literal () - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь использовать замены с запросом sequelize.literal ().

router.get('/posts/testapik', function(req, res)
{

    const user_id = req.session.user_id;

    const status ="accept"
  Posts.findAll({include:[{ model: Likes},{ model: Comments},{ model: Users}],
                where:{user_id:{[Op.in]:[sequelize.literal('SELECT `Follows`.receiver_id FROM `follows` AS `Follows` WHERE `Follows`.user_id=? and `Follows`.status=?',{ replacements: [user_id,status], type: sequelize.QueryTypes.SELECT })]}}

                })
  .then(users => 
    {

        res.send(users);
  })

});

Но он возвращает следующую ошибку

original:
   { Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? and `Follows`.status=?)' at line 1

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Для замены необработанного запроса вы должны написать имя переменной внутри запроса в следующем формате: :userIdReplacement.

const query = '(SELECT `Follows`.receiver_id FROM `follows` AS `Follows` WHERE `Follows`.user_id= :userIdReplacement and `Follows`.status="accept")';

db.sequelize.query(query, { replacements: { userIdReplacement : user_id }});

Если у вас есть более одной замены, просто поместите ее внутри объекта замены, разделив его запятыми.

0 голосов
/ 07 июля 2019

Это работает ... Я использовал этот user_id = '+ user_id +'

router.get('/posts/testapik', function(req, res)
{

    const user_id = req.session.user_id;

    const status ="accept"
  Posts.findAll({include:[{ model: Likes},{ model: Comments},{ model: Users}],
                where:{user_id:{[Op.in]:[sequelize.literal('(SELECT `Follows`.receiver_id FROM `follows` AS `Follows` WHERE `Follows`.user_id='+user_id+' and `Follows`.status="accept")')]}}

                })
  .then(users => 
    {
        console.log("Posts data Testing =>",users);
        res.send(users);
  })
    .catch((err)=>
    {
        console.error(err)
        res.status(501)
        .send({
                error : "error..... check console log"
              })
    })


});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...