【问题标题】:how can i write this query in node js sequelize我如何在节点 js sequelize 中编写此查询
【发布时间】:2020-06-16 20:11:49
【问题描述】:

这是 Codeigniter 代码。我尝试在 nodejs 中进行此查询

$this->db->where('feature', $feature);
$this->db->where(1);
for ($i = 0; $i < sizeof($payment12); $i++) {
    $this->db->or_where("FIND_IN_SET('" . $payment12[$i] . "', payment)");
}
$this->db->where(1);
for ($i = 0; $i < sizeof($coin); $i++) {
    $this->db->or_where("FIND_IN_SET('" . $coin[$i] . "', coin_id)");
}
$this->db->like('name', $website_name);
$this->db->where(1);
for ($i = 0; $i < sizeof($location); $i++) {
    $this->db->or_where("FIND_IN_SET('" . $location[$i] . "', location)");
}

这里是 MySql 查询示例

 SELECT *, (fees + privacy + speed + limits + trusted + easy_use) AS totalRank FROM `Websites` WHERE ( `feature` = '2' ) AND ( 1 IS NULL OR FIND_IN_SET('credit', payment) OR FIND_IN_SET('bank', payment) ) AND ( 1 IS NULL OR FIND_IN_SET('ZEC', coin_id) OR FIND_IN_SET('BTC', coin_id) ) AND ( `name` LIKE '%coin%' ESCAPE '!' ) AND ( 1 IS NULL OR FIND_IN_SET('USA', location) OR FIND_IN_SET('IND', location) ) AND `status` = 1 ORDER BY `totalRank` DESC

可以在 Node.js Sequelize 中转换吗?

【问题讨论】:

  • 你能分享一下这个的mysql查询吗?
  • 如果你愿意,你可以在 sequelize 中进行原始查询,我可以为你做吗?
  • 是的,请。你可以

标签: node.js codeigniter npm sequelize.js


【解决方案1】:

你可以这样做。

sequelize.query(" SELECT *, (fees + privacy + speed + limits + trusted + easy_use) AS totalRank FROM `Websites` WHERE ( `feature` = '2' ) AND ( 1 IS NULL OR FIND_IN_SET('credit', payment) OR FIND_IN_SET('bank', payment) ) AND ( 1 IS NULL OR FIND_IN_SET('ZEC', coin_id) OR FIND_IN_SET('BTC', coin_id) ) AND ( `name` LIKE '%coin%' ESCAPE '!' ) AND ( 1 IS NULL OR FIND_IN_SET('USA', location) OR FIND_IN_SET('IND', location) ) AND `status` = 1 ORDER BY `totalRank` DESC", {
    type: sequelize.QueryTypes.SELECT,
    model: Websites
}).then(value => {
    console.log(value);
})

【讨论】:

  • 不可能在db.websites.findAll({ where: {wid: w_id},}).then(web_list =&gt; { return resolve({status: 1, msg: "Data Load successfully.", data: web_list}); })
  • 是的,但是FIND_IN_SET 不能在续集模式下工作,因为我们必须使用原始查询,即使续集文档在续集模式下已经删除了FIND_IN_SET 的页面。
  • 我也面临同样的问题,经过大量研究,我不得不使用原始查询。
  • @Vipul24Task 如果这对您的问题有帮助,请考虑将此答案标记为!
  • 谢谢@Vyas Arpit,但这是一个静态查询,在动态中我有成千上万的硬币等等,FIND_IN_SET 每次怎么可能。你的查询是完美的。但这里我只用了 2 个硬币
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-01
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 2018-07-01
  • 2021-10-16
  • 2011-02-17
相关资源
最近更新 更多