###vis.jsでノードを表示させたい
vis.jsでノードを表示させたいのですが、最終的にはURLのパラメータを元に中身を動的に表示させたいです。
実際に使用しているvis.jsのサンプルはこちらです。
http://visjs.org/examples/network/nodeStyles/colors.html
colors.htmlのソースを見ると、
javascript
1 // create an array with nodes 2 var nodes = new vis.DataSet([ 3 {id: 1, label:'html color', color: 'lime'}, 4 {id: 2, label:'rgb color', color: 'rgb(255,168,7)'}, 5 {id: 3, label:'hex color', color: '#7BE141'}, 6 {id: 4, label:'rgba color', color: 'rgba(97,195,238,0.5)'}, 7 {id: 5, label:'colorObject', color: {background:'pink', border:'purple'}}, 8 {id: 6, label:'colorObject + highlight', color: {background:'#F03967', border:'#713E7F',highlight:{background:'red',border:'black'}}}, 9 {id: 7, label:'colorObject + highlight + hover', color: {background:'cyan', border:'blue',highlight:{background:'red',border:'blue'},hover:{background:'white',border:'red'}}} 10 ]) 11 12 // create an array with edges 13 var edges = new vis.DataSet([ 14 {from: 1, to: 3}, 15 {from: 1, to: 2}, 16 {from: 2, to: 4}, 17 {from: 2, to: 5}, 18 {from: 2, to: 6}, 19 {from: 4, to: 7}, 20 ]);
とある部分のオブジェクト部分を動的にしたいのです。
node.js、ExpressでMySQLから結果を取得してオブジェクトにしたのですが、それをどうやってindex.ejsに取り込めばいいのかがわかりません。
以下、Expressの/routes/index.js
javascript
1const express = require('express'); 2const router = express.Router(); 3const mysql = require('mysql2/promise'); 4 5const params = { 6 host: "localhost", 7 user: "root", 8 database: "foo" 9}; 10 11const getFunc = async (id) => { 12 const conn = await mysql.createConnection(params); 13 const sql = `SELECT * FROM hoge WHERE id = ?`; 14 const [result] = await conn.query(sql, [id]); 15 conn.end(); 16 17 const obj = { // これを/views/index.ejsのvar nodesに取り込めれば解決 18 id: result[0].fuga_id, 19 label: result[0].fuga_label, 20 title: result[0].fuga_title, 21 color: result[0].fuga_color, 22 shape: 'box' 23 }; 24 25 // var edgesはいったん省略 26 27 return obj; 28}; 29 30main = () => { 31 router.get('/', async (req, res, next) => { 32 let obj; 33 if (req.query.p) obj = await getFunc(req.query.p); 34 res.render('index', { obj: obj }); 35 }); 36}; 37 38main(); 39 40module.exports = router;
サンプルでいうところのcolors.htmlがマルっとExpressのindex.ejsになるのですが、サンプルではvis.jsのJavaScriptをHTMLに直に埋め込んでいると思います。
そこにどうやってnode.jsからの結果を埋め込めばいいのかと。。。
JavaScript同士なのだから簡単に変数を渡せるような気がするのですが、やり方がわからないです。
すみませんが、よろしくお願い致します。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。