Как хранить SVG в OrientDB с помощью OrientJS

Как хранить SVG в OrientDB с помощью OrientJS

svg — это не что иное, как строка синтаксиса XML.

Например, рассмотрим следующее SVG:

 var svg = `{amp}lt;svg xmlns="http://www.w3.org/2000/svg" width="400" height="400"{amp}gt; {amp}lt;circle cx="100" cy="100" r="50" stroke="black" stroke-width="5" fill="red" /{amp}gt;{amp}lt;/svg{amp}gt;` 

У вас есть два варианта:

  1. Храните svg как простую String
  2. Храните svg как String кодировке base64

Если ваш svg содержит только символы ASCII, метод 1 должен подойти. В противном случае вам нужно использовать метод 2. Примечание: метод 2 можно использовать для хранения файлов любого типа !!!

Пример обоих методов в OrientJS :

 // First npm install the following packages npm install orientjs npm install await-to-js 

Затем создайте файл app.js и запустите его:

 const OrientDBClient = require("orientjs").OrientDBClient; const to = require('await-to-js').default; // SVG EXAMPLE IMAGE var svg = `{amp}lt;svg xmlns="http://www.w3.org/2000/svg" width="400" height="400"{amp}gt; {amp}lt;circle cx="100" cy="100" r="50" stroke="black" stroke-width="5" fill="red" /{amp}gt;{amp}lt;/svg{amp}gt;` connect().then(async function(db) { // Add class to database [err, result] = await to( db.session.class.create('Example', 'V') ); if (err) { console.error(err); }; // Add property image to class [err, result] = await to( db.session.command('CREATE PROPERTY Example.image STRING').all() ); if (err) { console.error(err); }; // Add property name to class [err, result] = await to( db.session.command('CREATE PROPERTY Example.type STRING').all() ); if (err) { console.error(err); }; // ***************************************************************** // ********************** USING PLAIN STRING *********************** // ***************************************************************** // Add node to class with image stored as plain string (just use var [svg]) [err, result] = await to( db.session.insert().into('Example').set({image: svg, type: 'string'}).one() ); if (err) { console.error(err); }; // Retrieve simple string from database [err, result] = await to( db.session.select('image').from('Example').where({type: 'string'}).one() ); if (err) { console.error(err); }; // Output svg XML to the console console.log(result.image); // ***************************************************************** // ********************* USING BASE64 ENCODING ********************* // ***************************************************************** // Convert to base64 var buf = Buffer.from(svg, 'utf-8').toString("base64"); // Add node to class with image encoded as base64 [err, result] = await to( db.session.insert().into('Example').set({image: buf, type: 'base64'}).one() ); if (err) { console.error(err); }; // Retrieve base64 encoded svg from database [err, result] = await to( db.session.select('image').from('Example').where({type: 'base64'}).one() ); if (err) { console.error(err); }; // Output svg XML to the console var output = Buffer.from(result.image, 'base64'); console.log(output.toString('ascii')); }) async function connect() { // Connect to Server [err,client] = await to(OrientDBClient.connect({ host: 'localhost', // Specify your host here port: '2424' // Make sure you call the HTTP port })); if (err) { console.log("Cannot reach OrientDB. Server is offline"); return false; } // Connect to Database. [err,session] = await to(client.session({ name: 'demodb', // Name of your database username: 'admin', // Username of your database password: 'admin' // Password of your database })); if (err) { console.log("Database doesn't exist."); return false; } // Add handler session.on('beginQuery', (obj) ={amp}gt; { console.log(obj); }); // Check if session opens console.log("Successfully connected to database."); var graph = {client, session}; return graph; } 

Этот код создаст класс Example который имеет свойства image и type а затем создаст две вершины: одну, где svg сохраняется как строка, и одну, где svg сохраняется как строка, закодированная в base64 . Это также показывает, как получить оба изображения снова в JavaScript.

После того, как вы получили файлы, вы можете передать их внешнему интерфейсу и отобразить их в DOM, после чего все стили CSS, определенные в DOM, также будут применены.

Я надеюсь, что это отвечает на ваш вопрос.

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector