【发布时间】:2017-05-10 02:19:00
【问题描述】:
我要做的是通过用户名查找用户,并包括他们是否是当前用户的朋友。
我想尝试使用一个查询来执行此操作,这样我就可以减轻服务器上的负载。我倾向于相信,在通过用户名获取用户后,我将不得不进行另一次查询,以查看他们是否是朋友。
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
}
});
};
【问题讨论】:
-
与您的问题无关,但您可以省略:.toJSON(),响应中只需要用户
-
感谢您指出这一点
-
你能给我们看看你的朋友模型文件吗?还是数据库结构?
-
@DZDomi 我添加了它
标签: node.js database postgresql sequelize.js