2016-12-24 78 views
1

我想要做的是通過他們的用戶名找到用戶,並且還包括他們是否是當前用戶的朋友。如何正確構建此Sequelize查詢?

我想嘗試用一個查詢來做到這一點,這樣我就可以減輕服務器上的負載。我傾向於認爲,在用戶名後面的用戶名後,我將不得不做另一個查詢,以查看他們是不是朋友。

exports.findUser = (req, res) => { 

    //Get the username of the person to find 
    var username = req.params.username.toLowerCase(); 

    if (!username) { 
     //No username given 
     res.status(400).send(); 
    } else if (username == req.user.get('username')) { 
     //Send back a 400 because we dont want users thinking there is someone with their username 
     res.status(400).send() 
    } 

    //Get a user where the username matches the one given 
    db.user.findOne({ 
     where: { 
      username: username 
     }, 
     attributes: [ 
      "id", 
      "username" 
     ], 
     include: [{ 
      model: db.friend, 
      where: { 
       //Or is used because we don't know who created the friendship 
       $or: [ 
        { 
         friendOneId: NEED THE ID OF THE USER IM SEARCHING, 
         friendTwoId: req.user.get('id') 
        }, 
        { 
         friendOneId: req.user.get('id'), 
         friendTwoId: NEED THE ID OF THE USER IM SEARCHING 
        } 
       ] 
      } 
     }] 
    }).then(function(user) { 
     if (user) { 
      res.json(user); 
     } else { 
      res.status(404).send(); 
     } 
    }, function(e) { 
     res.status(500).send(); 
    }); 
}; 

這裏的要求

module.exports = function(sequelize, DataTypes){ 
    return sequelize.define('friend', { 
     friendOneId: { 
      type: DataTypes.INTEGER, 
      allowNull: false 
     }, 
     friendTwoId: { 
      type: DataTypes.INTEGER, 
      allowNull: false 
     } 
    }); 
}; 
+0

與您的問題無關,但您可以省略:.toJSON(),只需要用戶在回覆中 – DZDomi

+0

感謝您指出這一點 – ConnorB

+0

您能向我們展示您的朋友模型文件嗎?或數據庫結構? – DZDomi

回答

0

從我所看到的,你只需要刪除,並從不同或查詢的部分我的朋友模式,所以基本上是:

where : { 
    $or: [ 
     { 
      friendTwoId: req.user.get('id') 
     },   
     {  
      friendOneId: req.user.get('id'), 
     } 
    ] 
}, 
required: false 

此外,如果將必需屬性設置爲false,則查詢也將返回所有其他用戶,即使包含查詢未顯示任何結果

+0

但是,這將取得所有的友誼,我分開的權利?我只想看看我是否是我正在尋找的用戶的朋友 – ConnorB

+0

我沒有碰到這個 – ConnorB

+0

,您應該詳細說明您的問題,查詢中顯示了什麼? – DZDomi