在sequelize中添加按位和列

时间:2018-06-12 17:11:20

标签: node.js postgresql sequelize.js

我试着这样做但是这个。

Building.findAll({
    attributes: ['id', 'bitwise'],
    where: Sequelize.and(
        Sequelize.where(Sequelize.literal('bitwise & 2'), '!=', 0),
        Sequelize.where(Sequelize.literal('bitwise & 4'), '=', 0)
    )
})

但这不适用于sequelize v4 API。

我试着写这样的东西

Subscription.findAll({
  where: { [Op.and]: { status: "active", Sequelize.literal(`deliveryBitMask & 1`), '=', 0 }
})

它给了我一个意外的令牌错误。

我们如何将文字对象传递给续集?

2 个答案:

答案 0 :(得分:0)

将AND与一系列条件一起使用:

Subscription.findAll({
  where: { [Op.and]: [ {status: "active"}, Sequelize.literal("deliveryBitMask & 1 = 0")] }
})

似乎不可能将文字与运算符(如=)混合在一起,而不是我见过的任何例子。但我不是百分百肯定,因为文档并不全面。

答案 1 :(得分:0)

我想补充上面的答案

 int main()
 {
     int ret = 0;
     std::map<std::string, MyType*> mapOfWords;
     std::cout << map_add_item(&mapOfWords,"earth",time(NULL)+1) << std::endl;
     return 0;
 }

这将是这样的generte查询。

但它转换列deliveryBitMask,因为未引用查询文字。所以在查询字符串中使用转义字符作为引用 除非引用,否则PostgreSQL会将所有表列名称转换为小写。