航行js并在neo4j中创建节点之间的关系

航行js并在neo4j中创建节点之间的关系,neo4j,sails.js,cypher,nodes,Neo4j,Sails.js,Cypher,Nodes,我有两个节点,第一个是用户,第二个是帖子。 我想在用户中的Auser和帖子中的auserPost之间建立关系。 我开始使用Sailsjs,但在创建两个节点之间的关系时遇到了问题。我的数据库是neo4j。 有什么想法吗 实际上,我想将以下代码转换为sailsjs api: CREATE (matrix:Movie { title:"The Matrix",released:1997 }) CREATE (cloudAtlas:Movie { title:"Cloud Atlas",r

我有两个节点,第一个是用户,第二个是帖子。 我想在用户中的Auser和帖子中的auserPost之间建立关系。 我开始使用Sailsjs,但在创建两个节点之间的关系时遇到了问题。我的数据库是neo4j。 有什么想法吗


实际上,我想将以下代码转换为sailsjs api:

   CREATE (matrix:Movie { title:"The Matrix",released:1997 })
   CREATE (cloudAtlas:Movie { title:"Cloud Atlas",released:2012 })
   CREATE (forrestGump:Movie { title:"Forrest Gump",released:1994 })
   CREATE (keanu:Person { name:"Keanu Reeves", born:1964 })
   CREATE (robert:Person { name:"Robert Zemeckis", born:1951 })
   CREATE (tom:Person { name:"Tom Hanks", born:1956 })
   CREATE (tom)-[:ACTED_IN { roles: ["Forrest"]}]->(forrestGump)
   CREATE (tom)-[:ACTED_IN { roles: ['Zachry']}]->(cloudAtlas)
   CREATE (robert)-[:DIRECTED]->(forrestGump)

将此代码添加到适配器

runQuery: function(connection , collection , myQuery, params , cb){
        query(connection, collection, myQuery, params, cb, true);
    }
在控制器中,请使用以下命令:

getTestData:function(req,res){
var lang  = req.param("lang");
var skip = req.param("skip");
//get user id from session
var userId=req.session.userId;
var limit = 10;

//relations.posted is a string
var q = [
  'match (u:'+Users.tablename+')-[:'+relations.posted+']->(p:'+Posts.tablename+')-[:'+relations.posted_to+']->(h:'+Headlines.tablename+'),',
  '(h)-[:'+relations.cover_image+']->(i:'+Files.tablename+'),(p)-[:'+relations.sound_file+']->(s:'+Files.tablename+'),(hp:'+Posts.tablename+')-[:'+relations.posted_to+']->(h),',
  '(u)-[:'+relations.profile_picture+']->(ui:'+Files.tablename+')',
  'where p.isDeleted = false and hp.isDeleted = false',
  'return distinct(h) as headlines,count(hp) as postCount,max(hp.createdAt) as lastPostDate,hp as lastPost ,i as headlineImage,s as lastPostSound,u as user,ui as userProfileImg',
  'order by postCount desc',
  'skip '+skip,
  'limit '+limit
];
var params={};
Headlines.runQuery(q,params,function(err,result){
  var feeds = [];
  if(err == null){
    for (var i = 0; i < result.length; i++) {
      var obj = result[i];
      var feed = {};
      feed.post={
        id:obj.lastPost.id,
        uid:obj.lastPost.data.uid,
        url:obj.lastPostSound.data.url
      };

      feeds.push(feed);
    }
  }
  return res.json({
    err:err,
    result:feeds
  });
});
}
getTestData:函数(req,res){
var lang=请求参数(“lang”);
var skip=请求参数(“skip”);
//从会话获取用户id
var userId=req.session.userId;
var限值=10;
//relations.posted是一个字符串
变量q=[
“匹配(u:'+用户.tablename+)-[:'+关系.posted+']->(p:'+Posts.tablename+)-[:'+关系.posted.+']->(h:'+标题.tablename+),”,
"(h)(p)(p)()(p)()(s)(s)(s)(s)"Files.tablename)()),(hp""",
“(u)-[:”+关系.profile_picture+”]->(ui:“+文件.tablename+”),
'其中p.isDeleted=false和hp.isDeleted=false',
'返回不同的(h)作为标题,计数(hp)作为后计数,最大(hp.createdAt)作为lastPostDate,hp作为lastPost,i作为headlineImage,s作为lastPostSound,u作为用户,ui作为userProfileImg',
“按邮政计数说明排序”,
“跳过”+跳过,
“限制”+限制
];
var params={};
runQuery(q、参数、函数(err、result){
var提要=[];
if(err==null){
对于(变量i=0;i
将此代码添加到适配器

runQuery: function(connection , collection , myQuery, params , cb){
        query(connection, collection, myQuery, params, cb, true);
    }
在控制器中,请使用以下命令:

getTestData:function(req,res){
var lang  = req.param("lang");
var skip = req.param("skip");
//get user id from session
var userId=req.session.userId;
var limit = 10;

//relations.posted is a string
var q = [
  'match (u:'+Users.tablename+')-[:'+relations.posted+']->(p:'+Posts.tablename+')-[:'+relations.posted_to+']->(h:'+Headlines.tablename+'),',
  '(h)-[:'+relations.cover_image+']->(i:'+Files.tablename+'),(p)-[:'+relations.sound_file+']->(s:'+Files.tablename+'),(hp:'+Posts.tablename+')-[:'+relations.posted_to+']->(h),',
  '(u)-[:'+relations.profile_picture+']->(ui:'+Files.tablename+')',
  'where p.isDeleted = false and hp.isDeleted = false',
  'return distinct(h) as headlines,count(hp) as postCount,max(hp.createdAt) as lastPostDate,hp as lastPost ,i as headlineImage,s as lastPostSound,u as user,ui as userProfileImg',
  'order by postCount desc',
  'skip '+skip,
  'limit '+limit
];
var params={};
Headlines.runQuery(q,params,function(err,result){
  var feeds = [];
  if(err == null){
    for (var i = 0; i < result.length; i++) {
      var obj = result[i];
      var feed = {};
      feed.post={
        id:obj.lastPost.id,
        uid:obj.lastPost.data.uid,
        url:obj.lastPostSound.data.url
      };

      feeds.push(feed);
    }
  }
  return res.json({
    err:err,
    result:feeds
  });
});
}
getTestData:函数(req,res){
var lang=请求参数(“lang”);
var skip=请求参数(“skip”);
//从会话获取用户id
var userId=req.session.userId;
var限值=10;
//relations.posted是一个字符串
变量q=[
“匹配(u:'+用户.tablename+)-[:'+关系.posted+']->(p:'+Posts.tablename+)-[:'+关系.posted.+']->(h:'+标题.tablename+),”,
"(h)(p)(p)()(p)()(s)(s)(s)(s)"Files.tablename)()),(hp""",
“(u)-[:”+关系.profile_picture+”]->(ui:“+文件.tablename+”),
'其中p.isDeleted=false和hp.isDeleted=false',
'返回不同的(h)作为标题,计数(hp)作为后计数,最大(hp.createdAt)作为lastPostDate,hp作为lastPost,i作为headlineImage,s作为lastPostSound,u作为用户,ui作为userProfileImg',
“按邮政计数说明排序”,
“跳过”+跳过,
“限制”+限制
];
var params={};
runQuery(q、参数、函数(err、result){
var提要=[];
if(err==null){
对于(变量i=0;i
@josilber这是我在代码中使用的解决方案。@josilber这是我在代码中使用的解决方案。