ここで私がやったのは、2つのノード、つまりユーザーノードと他のノードの間の関係を取得したいということです。ここで、ユーザーノードには 2 種類の関係 (user) - [:knows] -> (other) と (user) - [:friendrequest] -> (other) があります。
私は次のことをしたい:
- ユーザーとその他の間に関係が存在しない場合に、ビューに友達追加ボタンを表示します。
- ユーザーと他のユーザーの間にフレンドリクエスト関係が存在する場合に送信されるフレンドリクエストを表示
- ユーザーと他のユーザーの間に関係が存在することを知っている場合、既に友達のステータス
.実際のコードはこれです。
User.checkRelationship = function (user, fid, callback) {
var uids = [user.uid, fid];
async.map(uids, User.by_uid, function (err, usernodes) {
if (!err && usernodes && usernodes.length) {
User.relsCheck(usernodes, function (err, rels) {
if (!err && rels) {
console.log('relationship ' + JSON.stringify(rels.data()));
callback(null, rels);
} else {
callback(err || new Error('friend request exists'));
}
});
} else {
callback(err || new Error('Unable to fetch user nodes: ' + uids.join(',')));
}
});
};
User.relsCheck = function (nodes, callback) {
if (nodes.length !== 2) {
return callback(new Error('Invalid/insufficient arguments'));
}
var query = [
'START user=node({userId}), other=node({otherId})',
'MATCH (user) -[rels?:RELTYPE]-> (other)',
'RETURN rels'
].join('\n');
var params = {
userId: nodes[0].node().id,
otherId: nodes[1].node().id,
};
db.query(query, params, callback);
};
クエリとコールバックに問題があります。人々を助けてください、ありがとう!