目前,我使用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中按值查询表格,那将非常感激。
答案 0 :(得分:1)
我不知道你是否可以在任何字段中按值查询表,但如果它只是两个字段(发送者和接收者),你可以像这样使用or
运算符:
db.pets.findAll({
where: {
$or:[{
sender: petID
},{
receiver: petID
}]
}
})