这是我做的,我想得到两个节点之间的关系,即用户节点和其他节点。这里用户节点有两种关系(用户) - [:knows] ->(其他)和(用户) - [:friendrequest] ->(其他)
我想做以下事情:
- 在视图中显示添加朋友按钮,以防用户与其他人之间不存在任何关系,
- 如果用户和其他人之间存在好友请求关系,则显示发送的好友请求
- 如果知道用户和其他人之间存在关系,则已经是朋友状态
.实际代码是这样的。
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);
};
查询和回调有问题请大家帮忙,谢谢!