2014-07-08 1 views
1

GrapheneDB에 Neo4j 데이터베이스가 있고 자바 스크립트를 통해 HTML 페이지에서 노드와 관계를 만들 수 있기를 바랍니다. 내 서버 공간에 HTML 페이지를 호스팅하고 있습니다.자바 스크립트 만 사용하여 내 GrapheneDB neo4j 데이터베이스에 액세스하는 방법

이것은 노드 생성 테스트를 시도한 것입니다. 당신이 볼 수 있듯이

<!doctype html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
</body> 
</html> 

script type="text/javascript"> 
    var r = new XMLHttpRequest(); 
    r.open("POST", "GRAPHENE REST URL", true); 
    r.onreadystatechange = function() { 
     if (r.readyState != 4 || r.status != 200) return; 
     var json_response = JSON.parse(r.responseText); 
     console.log(json_response); 
    }; 
    var cyQuery=JSON.stringify({"query" : "CREATE (ee:Person { name: 'Emil', klout: 99 })"}); 
    r.send(cyQuery); 
</script> 

, 나는 사이퍼와 REST API를 사용하려고하지만, 다음과 같은 오류가 발생합니다 :

"Failed to load resource: the server responded with a status of 401 (Unauthorized)"

은 내가하지 그래 핀에 로그인하고 있기 때문에이 것을 이해합니다. 내 질문은 두 가지이다 :

  1. 나는, (아마도 PHP를 통해) 백그라운드에서 그래 핀에 loging를 구현할 수 있도록 HTML 페이지에 노드를 만들 수 있습니다에 액세스하는 모든 사용자?
  2. Neo4j REST 드라이버를 설치하지 않고도이 작업을 수행 할 수 있습니까? 서버 공간에 프로그램을 설치할 수 없으며 파일 만 업로드 할 수 있습니다.

고맙습니다. 제 질문에 도움이 되었기를 바랍니다.

답변

1
  1. 코드에 인증 자격 증명을 포함하지 않은 것으로 보입니다. GrapheneDB에는 HTTP 기본 인증이 필요합니다.

  2. JS에서이 작업을 수행 할 수 있어야합니다. 그러나이하지 누군가가 등을 수정하고 데이터를 삭제, 사용자 인증 정보를 얻을 수있을 데이터베이스에 액세스하기 때문에을 추천

하면 사용자 쿼리 및 데이터베이스를 수정할 수 있도록하려면 내가 제안 :

  • 따라서 앱에서 사용자 인증의 일종을 구현 사용자
  • 에서 인증 자격 증명을 숨기고, 인스턴스에 연결하기 위해 프록시 또는 웹 애플리케이션을 사용 있도록 앱에 로그인 한 사용자 만 귀하의 데이터베이스를 쿼리/수정할 수 있습니다.
+0

@albertoperdomo. 사용자가 보지 않고 GrapheneDB 인스턴스에 연결할 때 프록시 나 웹 애플리케이션을 어떻게 사용할 수 있습니까? –

+0

완전한 튜토리얼을 요구하지 않습니다. 경험이 없으므로 어쩌면 시작하는 링크 일 수도 있습니다. –

0

나는 이것을 여기에서 빨리 좋아한다. 내가 layz 해왔을 때, 나는 username : password의 base64를 외부 적으로 (openssl enc base64를 사용하여) 계산했고 환경 변수로 제공했다. 할 일은 옳은 일이지만 둘 다 제공하고 물론 노드에서 인코딩을하는 것이다.

cat package.json 


{ 
    "name": "proxy-neo4j-db", 
    "version": "0.0.1", 
    "private": true, 
    "engines": { 
    "node":"0.8.26", 
    "npm":"1.1.49" 
    }, 
    "scripts": { 
    "start": "node proxy" 
    }, 
    "dependencies": { 
    "connect": "2.19.5", 
    "http-proxy" :"1.1.4" 
    } 
} 

cat proxy.js 


var httpProxy = require('http-proxy'); 
var connect = require('connect'); 

var target = { target: process.env.NEO4J_URL || process.env.GRAPHENEDB_URL || "http://localhost:7474" }; 
var port = process.env.PORT || 8001; 
var auth = "Basic "+process.env.AUTH; 

connect.createServer(
    function (req, res) { 
    req.headers['Authorization']=auth; 
    proxy.web(req, res); 
    } 
).listen(port); 

var proxy = httpProxy.createProxyServer(target); 
관련 문제