Sequelize - 仅使用值

时间:2017-10-26 16:51:11

标签: express sequelize.js

目前,我使用ExpressJS和Sequelize ORM构建了一个Web应用程序。当我在尝试查询表时,当我意识到我只需要通过一个值查询它时(意味着,值可以在一个或另一个字段中),我就陷入困境。

这是具体的模型。

module.exports = (sequelize, DataTypes) => {
    return sequelize.define('petRelation', {
        id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
        sender: {
            type: DataTypes.INTEGER,
            allowNull: false,
            references: {
                model: 'pets',
                key: 'id'
            }
        },
        receiver: {
            type: DataTypes.INTEGER,
            allowNull: false,
            references: {
                model: 'pets',
                key: 'id'
            }
        },
        status: {
            type: DataTypes.STRING
        },
        created_at: {
            type: DataTypes.DATE,
            allowNull: false
        },
        updated_at: DataTypes.DATE,
        deleted_at: DataTypes.DATE
    }, {
        tableName: 'petRelation',
        paranoid: true,
        underscored: true
    });
};

在我的应用程序中,有些宠物可以在它们之间建立朋友关系。我试图列出宠物的每个关系,这意味着宠物的ID可以位于"发件人"字段,在"接收器"字段。

我记录了自己使用Sequelize文档,谷歌搜索,堆栈搜索,我没有发现任何有用的东西。

我知道宠物ID所在字段的普通查询将如下所示。

db.pets.findAll({
    where: {
        sender: petID
    }    
})

如果有人知道如何在Sequelize中按值查询表格,那将非常感激。

1 个答案:

答案 0 :(得分:1)

我不知道你是否可以在任何字段中按值查询表,但如果它只是两个字段(发送者和接收者),你可以像这样使用or运算符:

db.pets.findAll({
    where: {
        $or:[{
            sender: petID
        },{
            receiver: petID
        }]

    }    
})