2015-10-13 3 views
2

Можем ли мы использовать графическую базу данных neo4j с реакцией js? Если не так, есть альтернативный вариант для включения базы данных графа в реакцию JS?Использование Neo4j с React JS

ответ

3

tl; dr;

Да, вы можете!


Вы смешиваете две разные технологии вместе. Neo4j - это база данных графа, а React.js - это фреймворк для front-end.

Вы можете подключиться к Neo4j из JavaScript - http://neo4j.com/developer/javascript/

0

легко, все, что вам нужно, это neo4j-driver: https://www.npmjs.com/package/neo4j-driver

Вот наиболее упрощенным использование:

neo4j.js

//import { v1 as neo4j } from 'neo4j-driver' 
const neo4j = require('neo4j-driver').v1 

const driver = neo4j.driver('bolt://localhost', neo4j.auth.basic('username', 'password')) 

const session = driver.session() 

session 
    .run(` 
     MATCH (n:Node) 
     RETURN n AS someName 
    `) 
    .then((results) => { 
     results.records.forEach((record) => console.log(record.get('someName'))) 
     session.close() 
     driver.close() 
    }) 

Лучше всего закрывать сеанс всегда после получения данных. Это недорого и легко.

Рекомендуется только закрыть сеанс драйвера после завершения вашей программы (например, Mongo DB). Вы увидите экстремальные ошибки, если вы закроете драйвер в трудное время, что невероятно важно, если вы начинаете. Вы увидите ошибки, такие как «подключение к серверу закрыто» и т. Д. В асинхронном коде, например, если вы запустили запрос и закроете драйвер до того, как результаты будут проанализированы, у вас будет плохое время.

В моем примере вы можете увидеть, что я закрою драйвер, но только для иллюстрации правильной очистки. Если вы запустите этот код в автономном JS-файле для тестирования, вы увидите, что node.js зависает после запроса, и вам нужно нажать CTRL + C для выхода. Добавление driver.close() исправляет это. Обычно драйвер не закрывается до тех пор, пока программа не выйдет/выйдет из строя, которая никогда не работает в API Backend, и только до тех пор, пока пользователь не войдет в Frontend.

Зная это сейчас, вы в отличном старте.

Помните, session.close() немедленно каждый раз, и будьте осторожны с driver.close().

Вы можете легко добавить этот код в компонент React или action creator и визуализировать данные.

Вы найдете его не иначе, как подключение и работа с Axios.

Вы также можете запускать операторы в транзакции, что полезно для задействованных уязвимых узлов. Вы должны сначала изучить это, но транзакционный поток выглядит следующим образом:

const session = driver.session() 
const tx = session.beginTransaction() 

tx 
    .run(query) 
    .then(// same as normal) 
    .catch(// errors) 

// the difference is you can chain multiple transactions: 

const tx1 = await tx.run().then() 

// use results 

const tx2 = await tx.run().then() 

// then, once you are ready to commit the changes: 


if (results.good !== true) { 
    tx.rollback() 
    session.close() 
    throw error 
} 

await tx.commit() 
session.close() 

const finalResults = { tx1, tx2 } 
return finalResults 

// in my experience, you have to await tx.commit 
// in async/await syntax conditions, otherwise it may not commit properly 
// that operation is not instant 
Смежные вопросы