据我所知,Neo4j(ID(node)
)给出的ID 不稳定,行为有点像SQL中的行号.由于ID主要用于SQL中的关系,并且这些ID很容易在Neo4j中建模,因此ID似乎没有多大用处,但是如何解决特定节点的检索?拥有一个REST API,它应该为每个节点(例如/api/concept/23
)提供唯一的路由,这似乎是Web应用程序的一个非常标准的案例.但尽管它是如此根本,我找到的唯一可行的方法是通过
// get unique id
MERGE (id:UniqueId{name:'Person'})
ON CREATE SET id.count = 1
ON MATCH SET id.count = id.count + 1
WITH id.count AS uid
// create Person node
CREATE (p:Person{id:uid,firstName:'Gabriel',lastName:'Smith'})
RETURN p AS person
Run Code Online (Sandbox Code Playgroud)
资料来源: http ://www.neo4j.org/graphgist?8012859
真的没有更简单的方法,如果没有,是否有一个特殊的原因呢?在Neo4j的背景下,我的方法是反模式吗?
我使用foreman将我的Procfile导出到一个upstart任务.
Procfile:
web: bundle exec rails server
websocket: bundle exec rails runner websocket-server/em_websocket.rb
Run Code Online (Sandbox Code Playgroud)
其中一个新兴任务(它们非常相似并且失败并出现相同的错误):
start on starting app-web
stop on stopping app-web
respawn
env PORT=5000
setuid app
chdir /var/www/app
exec bundle exec rails server
Run Code Online (Sandbox Code Playgroud)
错误(我通过dmesg得到它):
[35207.676836] init: Failed to spawn app-websocket-1 main process: unable to execute: No such file or directory
[35207.679577] init: Failed to spawn app-web-1 main process: unable to execute: No such file or directory
Run Code Online (Sandbox Code Playgroud)
当我切换到app用户时,我实际上能够bundle exec rails server
从给定目录运行.
有什么办法可以将误差再确定一点吗?我没有找到任何相关的登录/var/log/upstart/
.
首先关闭我的graphql数据模型:
type Human {
id: !String,
name: !String,
children: [Human]
}
Run Code Online (Sandbox Code Playgroud)
我正在使用的唯一路由(中继路由配置):
class extends Relay.Route {
static queries = {
human: () => Relay.QL`query RootQuery { viewer }`
};
static routeName = 'AppHomeRoute';
}
Run Code Online (Sandbox Code Playgroud)
列表组件:
class HumanList extends Component {
render() {
let {children} = this.props.human;
let subListsHTML = human ? children.map(child => (
<HumanListItem key={child.id} human={child}/>
)) : '';
return <ul>{subListsHTML}</ul>;
}
}
export default Relay.createContainer(HumanList, {
fragments: {
human: () => Relay.QL`
fragment on Human {
children { …
Run Code Online (Sandbox Code Playgroud) 如果有人有更好的头衔,请告诉我:p
我有以下型号:
class Car
has_many :car_drivers
has_many :drivers, :through => :car_drivers
end
class Driver
has_many :car_drivers
has_many :cars, :through => :car_drivers
end
class CarDriver
belongs_to :car
belongs_to :driver
end
Run Code Online (Sandbox Code Playgroud)
现在我想通过Car创建一个新的Driver,但是也应该创建join-table(car_drivers)中的记录.我尝试了以下操作,但在创建汽车记录时,连接表记录不是:driver_object.cars.create
在这种情况下,最佳做法是什么?