varの友人のINDEX関数に問題があります。私は空の配列に最初に設定して、ユーザーの友情結合表から個々のユーザーオブジェクトを前記配列にプッシュできるようにします。これは、サインインしたユーザーが、フレンドシップを開始したユーザーに応じて、ユーザーID列またはフレンドID列のフレンドシップ結合表に存在する可能性があるためです。Sequelize:結合テーブルの問題と結果のクエリ
問題は非同期な性質のため、私はconsole.log(友人)と呼ぶと、データベースのクエリはミリ秒遅れているため、まだ空の配列を記録しています。私はこの配列に、バックエンドAPIからJSONを提供する "myfriends"インデックスページとなる、現在のユーザーではないユーザーオブジェクトでいっぱいにしたいと考えています。私がJsonに奉仕しようとしているという事実を覚えておいて、すべての友人ユーザオブジェクトは1つの配列に終わらなければなりません。
ありがとうございます!
var user = require( "../../ models/index")。ユーザー。 var friendship = require( "../../ models/index")。友情。
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;