问题标签 [neo4j.rb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Neo4J 宝石关联和创建关系
这可以追溯到我对Neo4J Gem 的问题 - 保存未声明的关系
在文档中,他们举了一个例子
据我了解,第一行将删除所有关系,因为它手动将所有关联的评论设置为comment1,comment2。
但是第 2 行是做什么的呢?post.comments
应该检索与帖子相关的评论。因此,它似乎正在与 comment3 和其他评论建立关系。但是我们不想在帖子和评论之间建立关系吗?
要么我不理解语法及其在做什么,要么写的内容不清楚发生了什么。
看我的例子,我们有
如果event
是我的事件节点并且@event_question
是我的 event_question 节点,为什么要@event_question.events << event
在我的 event_question 和 event 之间创建关系?
现在undefined method '<<' for nil:NilClass
,我的控制器中有一个,这完全是另一个问题。
我的 event.rb 有
我的 event_question.rb 有
@event_question
两者event
都存在但@event_question.events
将返回 nil
ruby-on-rails - Neo4j gem - 查询特定关系
有很多方法可以获取节点和关系的模式,甚至根据关系属性查找关系本身(例如EnrolledIn.where(since: 2002)
,根据节点的特定属性获取关系的最佳方法是什么。例如
current_user -[:relationship]->事件
我知道事件 ID,所以对我来说,最合乎逻辑的方法是使用 event.id 作为正在搜索的属性之一来查询模式。我现在有这样的东西
event_rel = current_user.events(:e, :rel).where(id: event_id).pluck(:rel)
以上不起作用,它返回一个数组
ruby-on-rails - Neo4j gem - 更新关系属性方法
这是一个相当简单的问题。
是否有更新 gem 中关系属性的特定方法?我似乎无法做一个简单的update_attributes
or update
。
我的关系已创建,并且 nil 类的更新未定义。
我应该使用另一种方法吗?
ruby-on-rails - 如何删除 routes.rb 中的前缀路径
我正在尝试使用 active 和 neo4j 模型创建一个应用程序,并且我想将以下内容用于我的 neo4j 模型:
并在我的控制器中使用它们,如下所示:
在我的 routes.db 文件中,我有以下路线:
这样做的问题是它只生成具有 的路由'/neo/usernodes/'
,而我只想使用具有'/usernodes/'
.
可以只做产品'/usernodes/'
吗?如果是,我该怎么做?
那么如果我在 routes.db 中使用:
我收到以下错误:
这是我的路线:
ruby-on-rails - Neo4j gem - 处理管理员关系的首选方法
这主要是一个设计/效率问题,但我想看看在 neo4j 中是否有一种首选的方法来处理这个问题,而不是在 sql db 中如何处理。
现在我有 2 个模型 -user
和event
. 我也有关系,user
并event
表示他们将参加此次活动。我想找出代表活动管理员的最佳方式。换句话说,我希望能够查询由用户管理的事件。
一种方法是admin_of
在 user 和event
. 另一种方法是创建参与关系的管理属性。就像是admin: true
admin_of
查询似乎很简单,但向数据库添加了另一种关系。以后它也可以处理多管理员。
后一种方式可以通过我认为这样的方式进行查询:(来自文档)EnrolledIn.where(since: 2002)
所以我的搜索将包括admin: true
. 但是我不确定如何链接它,因为我希望它只是朋友活动。其他where
查询通常基于节点而不是关系的属性。
后一种方法似乎是首选方法,但查询它的正确方法是什么?还是第一种方法更简单,即使它增加了额外的关系?
更新: 我想出了这样的东西
result = Event.query_as(:event).match("event<-[invite: INVITED]-(user: User)<-[:FRIENDS_WITH]-(user)").where(invite: {admin: /true/}).pluck(:event)
基于详细的查询
https://github.com/neo4jrb/neo4j/wiki/Search-and-Match
更新 2
我现在有这个,但没有匹配。开始剖析我的查询出了什么问题的最佳方法是什么?
current_user.friends.events.query_as(:event).match("event<-[invite]-(user: User)<-[friends_with]-(user)").where(invite: {admin: true}, event: {detail: 'property'}).pluck(:event)
我的用户模型有
has_many :both, :events, model_class: 'Event', rel_class: 'Invite'
我的事件模型有
has_many :both, :users, model_class: 'User', rel_class: 'Invite'
我的邀请模型有
ruby-on-rails - Neo4j gem - has_many 的详细查询方向:两者
我能够从这个原始问题Neo4j gem中进行特定的模式匹配- Preferred method to deal with admin relationship via this
我无法获得这样的修改版本来工作
所以我真正改变的是我在邀请课程中改变了from_node
and的方向to_node
它以前设置为 fromEvent
到User
。我的一个问题是,为什么我必须改变它才能使查询工作?方向不重要has_many: both
吗?
另一个变化是将我的关系类型更改为小写。在我的模型中,它是用所有小写字母写的,这似乎很重要。我认为两者都会像neo4j那样转换为全大写,但就目前而言,它没有。
我确实认为我需要让 current_user 方法工作,因为我只想要 current_user 朋友的事件。建议?
ruby-on-rails - Neo4j gem - 在一个属性中查询多个参数
我什至不确定这个标题是否是最好的描述。
我正在通过一个表单为我的事件构建一些基本的过滤功能。事件具有来自选择下拉列表的类别。
现在,当您想要过滤时,您可以通过复选框选择您想要显示的类别。
我有点难过如何做到这一点。是否可以在一个查询中完成所有操作?还是您将每个类别分为 1 个?
我的旧查询是这样的current_user.friends.events(:event, :rel).where("rel.admin = {admin_p} AND event.detail = {detail_p}").params(admin_p: true, detail_p: true).pluck(:event)
在这种情况下,我需要类似event.category = category1, category2, cateogry3
. 显然不是这样写的。实现这一目标的方法?
ruby-on-rails - Neo4j gem - 从数组对象中查询
在我之前的示例中,我有这个查询
current_user.friends.events(:event, :rel).where("rel.admin = {admin_p} AND event.detail = {detail_p}").params(admin_p: true, detail_p: true).pluck(:event)
current_user.friends.events
将我带到事件以继续我的链,但是如果我已经有一个包含事件数组的对象,这是否有效?
在我的示例中,我正在尝试使用地理编码器来拉近。
所以我有我的用户和事件是地理编码的。
地理编码器可以做这样的事情
Venue.near([40.71, 100.23], 20)
# 查找 20 英里内的所有 objs
所以我基本上可以找到所有事件并将其存储在一个对象中。现在我可以使用 neo4j 查询来过滤该对象吗?
例如
array_object(:event, :rel).where("rel.admin = {admin_p} AND event.detail = {detail_p}").params(admin_p: true, detail_p: true).pluck(:event)
即使这可行,是否有另一种方法可以做到这一点?
ruby-on-rails - Facebook Omniauth:此授权码已过期
我首先在 Rails 中的 Facebook 登录回调中收到此错误。我不记得它的其余部分,但在那之后,我无法重现它。
现在,当我进行相同的登录尝试时出现错误
if user = User.find_from_omniauth(env["omniauth.auth"])
这将错误放在
User.where(auth.slice(:provider, :uid)).limit(1).first
它只是说
Node with id 133354
和Neo4j::Session::CypherError in SessionsController#create
这是基于http://railscasts.com/episodes/360-facebook-authentication的客户端授权的一些代码
不完全确定从哪里开始调试?
更新:似乎我什至无法访问http://localhost:7474/browser/
当我尝试拉起所有节点时,它给了我“未知错误”。第一个错误对数据库造成了严重破坏??
ruby-on-rails - Neo4j gem - 查询依赖于参数值
这可能不像是 rails 那样多的 neo4j。但也许我错了
我正在寻找有关处理参数为特定值的情况的建议。例如。在我的查询中
该事件有一个size_max
属性,它可以是整数,也可以是any
。现在我有any
一个空白值。基本上,如果他们选择任何一个,我需要在查询中一起忽略该参数(或以类似的方式处理它)。欺骗它的一种方法是处理外部情况,如果选择了任何一个并且值为空白,我手动将其设置为一个不会被击中的非常高的数字。
现在不知道如何在查询内部或外部执行此操作,而无需使用奇怪的 hacky 方式。建议?
更新
正如你所建议的,我有我的疑问。以及处理“验证”的方法
我将它更改为size_param
它不喜欢的空白。我希望能够处理这两种情况。例如,当您第一次点击页面时,参数是空的,而当您提交时,它是空白的。Nil 适用于场景 1 而不是场景 2。我需要一个||
案例吗?
在我看来我有
<% if !@friends_events.blank? %>
我的错误是
Don't know how to compare that. Left: 0 (Long); Right: false (Boolean)
在我看来,从上面的行。更改.blank?
为.nil?
允许过滤器通过(尽管不正确)