2017-10-26 14 views
0

現在、私はExpressJSとSequelize ORMを使ってWebアプリケーションを構築しています。テーブルを照会しようとしているときに、値だけで照会する必要があることを認識したときに、私は立ち往生しました(つまり、値は1つまたは別のフィールドにある可能性があります)。Sequelize - 値だけでテーブルを照会

ここに特定のモデルがあります。

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ドキュメント、Google検索、スタック検索を使用して自分自身を文書化したが、何も役に立たなかった。

PetのIDが存在するフィールドがわかっている通常のクエリは、このようになります。

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

誰かがSequelizeで値だけでテーブルをクエリする方法を知っていれば、それは大歓迎です。

私はあなたがそのフィールドのいずれかに値だけでテーブルを照会することができれば知っているが、それはちょうど2つのフィールド(送信者と受信者)だ場合は、このよう or演算子を使用することができますいけない

答えて

0

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

    }  
}) 
+1

いただき、ありがとうございます答え。それは有り難いです。私はあなたのソリューションを試して、それは魅力的なように働いた。あなたの答えを正しいものとしてマークしてください。 –

関連する問題