2017-06-01 7 views
1

Unhandled rejection Error: where: "raw query" has been removed, please use where ["raw query", [replacements]]Error: "raw query"が削除されました。[raw query]、[replacement]]を使用してください。

次のコードのレンダリング中にこのエラーが発生しました。

var queryWhere = {id: {$ne: null}}; 
if (req.query) { 
    if (req.query.gender && req.query.gender !== '') { 
     searchGender = "gender = '" + req.query.gender + "'"; 
    } else if (req.query.gender && req.query.gender === '') { 
     searchGender = "gender IS NOT NULL "; 
    } 
    if (req.query.experience && req.query.experience !== '') { 
     searchExperience = "experience = '" + req.query.experience + "'"; 
    } else if (req.query.gender && req.query.experience === '') { 
     searchExperience = "experience IS NOT NULL "; 
    } 
    queryWhere = { 
     $and: [ 
      {$or: [ 
       searchGender, 
       searchExperience]} 
     ] 
    }; 

    models.Users.findAll({ 
     offset: numPerPage * 50, 
     limit: 50, 
     where: queryWhere, 
     include: [ 
      {model: models.Users_Answers} 
     ], 
     order: [ 
      [models.Sequelize.col('id'), 'ASC'], 
      [models.Users_Answers, 'id', 'ASC'] 
     ] 
    }).then(function(answers) { 
     res.render('answers', {answers: answers, search: req.query.searchParam, moment: moment, pagesize: (numPerPage+1), total: totalCount/50}); 
    }); 
} else { 
    res.render('answers'); 
} 

がどのように私はこの問題を解決することができます:それはsearchフィールドにユーザーが入力した値によって生成される動的where句、ですか?

答えて

3

生のクエリは、アレイ

queryWhere = { 
    $and: [ 
     {$or: [ 
      [searchGender], 
      [searchExperience]]} 
    ] 
}; 
+0

をしてください使用していることでしょうか? [Op.or]: '%' + value.toUpperCase()+ '%' [Op.or]:{ [Op.like]: '%' +値+ '%'、 [ – stackdave

1

推奨される方法は、これを変換する方法Sequelize自身の事業者

if (req.query.gender && req.query.gender !== '') { 
    searchGender = {'gender': req.query.gender}; 
} else if (req.query.gender && req.query.gender === '') { 
    searchGender = {'gender': {$not: null}}; 
} 
if (req.query.experience && req.query.experience !== '') { 
    searchExperience = {'experience': req.query.experience}; 
} else if (req.query.gender && req.query.experience === '') { 
    searchExperience = {'experience': {$not: null}}; 
}