在IND朋友的INDEX函数中存在问题。我想最初将它设置为一个空数组,以便我可以将用户友谊连接表中的各个用户对象推送到所述数组。这是因为登录用户可以存在于userID列或friendID列下的友谊连接表中,具体取决于谁发起了友谊。
问题是由于异步性质,当我调用console.log(朋友)时,查询数据库的时间是毫秒,所以它仍然记录一个空数组。我希望数组中充满了不是当前用户的用户对象,这实际上是一个“myfriends”索引页面,它从后端API提供JSON。请记住我正在尝试为Json提供服务的事实,因此所有朋友用户对象都必须以一个单独的数组结束。
谢谢!
var user = require(“../../ models / index”)。user; var friendship = require(“../../ models / index”)。friendship;
var friendshipController = {
index: function(req, res) {
var friends = [];
var request = friendship.findAll({
where: {
status: "pending",
$and: {
$or: [
{
userId: req.session.user.id
},
{
friendId: req.session.user.id
}
]
}
}
}).then(function(friendships) {
res.json(friendships)
var friends = []
friendships.forEach(function(friendship) {
if (req.session.user.id === friendship.userId) {
user.findById(friendship.friendId).then(function(user) {
friends.push(user);
})
} else {
user.findById(friendship.userId).then(function(user) {
friends.push(user);
})
}
})
console.log(friends);
})
},
create: function(req, res) {
friendship.create({
userId: req.session.user.id,
friendId: 3,
}).then(function() {
res.redirect("/")
})
},
destroy: function(req, res) {
friendship.findAll().then(function(f) {
f.forEach(function(fn) {
fn.destroy()
})
})
}
}
module.exports = friendshipController;
答案 0 :(得分:0)
解决方案:对于每个友谊,将登录用户的每个相邻朋友的id推送到数组...然后运行查询以查找该数组中的所有用户(显然是sequelize的一个功能),然后使用该json数据进行响应。
index: function(req, res) {
var friends = [];
var query = friendship.findAll({
where: {
status: "pending",
$and: {
$or: [
{
userId: req.session.user.id
},
{
friendId: req.session.user.id
}
]
}
}
}).then(function(friendships) {
var friendIds = [];
friendships.forEach(function(friendship) {
if (req.session.user.id === friendship.userId) {
friendIds.push(friendship.friendId);
}
else {
friendIds.push(friendship.userId);
}
});
user.findAll({
where: {
id: friendIds
}
}).then(function(users) {
res.json(users);
})
})
}